commit c9c5091171cbf780bb293e6406dd8632b678bae8
Author: Davide Libenzi <[EMAIL PROTECTED]>
Date:   Fri Apr 11 16:55:04 2008 +0000

    signalfd: fix for incorrect SI_QUEUE user data reporting
    
    upstream commit: 0859ab59a8a48d2a96b9d2b7100889bcb6bb5818
    
    Michael Kerrisk found out that signalfd was not reporting back user data
    pushed using sigqueue:
    
      http://groups.google.com/group/linux.kernel/msg/9397cab8551e3123
    
    The following patch makes signalfd report back the ssi_ptr and ssi_int 
members
    of the signalfd_siginfo structure.
    
    Signed-off-by: Davide Libenzi <[EMAIL PROTECTED]>
    Acked-by: Michael Kerrisk <[EMAIL PROTECTED]>
    Cc: <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
    Signed-off-by: Chris Wright <[EMAIL PROTECTED]>

diff --git a/fs/signalfd.c b/fs/signalfd.c
index fb7f7e8..1b414ef 100644
--- a/fs/signalfd.c
+++ b/fs/signalfd.c
@@ -110,9 +110,14 @@ static int signalfd_copyinfo(struct signalfd_siginfo 
__user *uinfo,
                err |= __put_user(kinfo->si_uid, &uinfo->ssi_uid);
                err |= __put_user((long) kinfo->si_ptr, &uinfo->ssi_ptr);
                break;
-       default: /* this is just in case for now ... */
+       default:
+               /*
+                * This case catches also the signals queued by sigqueue().
+                */
                err |= __put_user(kinfo->si_pid, &uinfo->ssi_pid);
                err |= __put_user(kinfo->si_uid, &uinfo->ssi_uid);
+               err |= __put_user((long) kinfo->si_ptr, &uinfo->ssi_ptr);
+               err |= __put_user(kinfo->si_int, &uinfo->ssi_int);
                break;
        }
 
_______________________________________________
unionfs-cvs mailing list: http://unionfs.filesystems.org/
[email protected]
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs-cvs

Reply via email to