• Chris Wright's avatar
    [PATCH] RLIM: enforce rlimits on queued signals · 684c531c
    Chris Wright authored
    Add a user_struct pointer to the sigqueue structure.  Charge sigqueue
    allocation and destruction to the user_struct rather than a global pool.  This
    per user rlimit accounting obsoletes the global queued_signals accouting.
    
    The patch as charges the sigqueue struct allocation to the queue that it's
    pending on (the receiver of the signal).  So the owner of the queue is charged
    for whoever writes to it (much like quota for a 777 file).
    
    The patch started out charging the task which allocated the sigqueue struct.
    In most cases, these are always the same user (permission for sending a
    signal), so those cases are moot.  In the cases where it isn't the same user,
    it's a privileged user sending a signal to another user.
    
    It seems wrong to charge the allocation to the privleged user, when the other
    user could block receipt as long as it feels.  The flipside is, someone else
    can fill your queue (expectation is that someone else is privileged).  I think
    it's right the way it is.  The change to revert is very small.
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    684c531c
signal.c 65.1 KB