• Sukadev Bhattiprolu's avatar
    mqueue: fix si_pid value in mqueue do_notify() · a6684999
    Sukadev Bhattiprolu authored
    If a process registers for asynchronous notification on a POSIX message
    queue, it gets a signal and a siginfo_t structure when a message arrives
    on the message queue.  The si_pid in the siginfo_t structure is set to the
    PID of the process that sent the message to the message queue.
    
    The principle is the following:
    . when mq_notify(SIGEV_SIGNAL) is called, the caller registers for
      notification when a msg arrives. The associated pid structure is stroed into
      inode_info->notify_owner. Let's call this process P1.
    . when mq_send() is called by say P2, P2 sends a signal to P1 to notify
      him about msg arrival.
    
    The way .si_pid is set today is not correct, since it doesn't take into account
    the fact that the process that is sending the message might not be in the
    same namespace as the notified one.
    
    This patch proposes to set si_pid to the sender's pid into the notify_owner
    namespace.
    Signed-off-by: default avatarNadia Derbey <Nadia.Derbey@bull.net>
    Signed-off-by: default avatarSukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
    Acked-by: default avatarOleg Nesterov <oleg@redhat.com>
    Cc: Roland McGrath <roland@redhat.com>
    Cc: Bastian Blank <bastian@waldi.eu.org>
    Cc: Pavel Emelyanov <xemul@openvz.org>
    Cc: Eric W. Biederman <ebiederm@xmission.com>
    Acked-by: default avatarSerge Hallyn <serue@us.ibm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    a6684999
mqueue.c 30.4 KB