X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=fs%2Fsignalfd.c;h=8ead0db359339ca7f5986e3b89ff3b245938557e;hb=92794a5d6359f9e8ed0d43fe0f3c653f748dcc90;hp=fb7f7e8034df512db10978276d7c2cf8f9cc0a75;hpb=347c53dca73fca317d57781f510f5ff4f6c0d0d7;p=~andy%2Flinux diff --git a/fs/signalfd.c b/fs/signalfd.c index fb7f7e8034d..8ead0db3593 100644 --- a/fs/signalfd.c +++ b/fs/signalfd.c @@ -27,6 +27,7 @@ #include #include #include +#include struct signalfd_ctx { sigset_t sigmask; @@ -66,7 +67,7 @@ static int signalfd_copyinfo(struct signalfd_siginfo __user *uinfo, BUILD_BUG_ON(sizeof(struct signalfd_siginfo) != 128); /* - * Unused memebers should be zero ... + * Unused members should be zero ... */ err = __clear_user(uinfo, sizeof(*uinfo)); @@ -110,9 +111,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; }