diff options
author | Kyle McMartin <kyle@athena.road.mcmartin.ca> | 2007-02-09 00:38:54 (GMT) |
---|---|---|
committer | Kyle McMartin <kyle@athena.road.mcmartin.ca> | 2007-02-17 06:19:59 (GMT) |
commit | d104f11c3989b0bbe1216f6ad663d0ed91fb7bd8 (patch) | |
tree | caea3ed8061cc6752392cfd0648e134e15632f08 /arch/parisc/kernel/signal32.c | |
parent | 992378a06413116c6a7cf2ad597e096589e531aa (diff) | |
download | linux-d104f11c3989b0bbe1216f6ad663d0ed91fb7bd8.tar.xz |
[PARISC] fix sys_rt_sigqueueinfo
the parisc affecting portion of the patch was inadvertantly
reverted a while ago.
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
Diffstat (limited to 'arch/parisc/kernel/signal32.c')
-rw-r--r-- | arch/parisc/kernel/signal32.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/arch/parisc/kernel/signal32.c b/arch/parisc/kernel/signal32.c index a6b4231..2cbb4af 100644 --- a/arch/parisc/kernel/signal32.c +++ b/arch/parisc/kernel/signal32.c @@ -1,6 +1,8 @@ /* Signal support for 32-bit kernel builds * * Copyright (C) 2001 Matthew Wilcox <willy at parisc-linux.org> + * Copyright (C) 2006 Kyle McMartin <kyle at parisc-linux.org> + * * Code was mostly borrowed from kernel/signal.c. * See kernel/signal.c for additional Copyrights. * @@ -498,3 +500,22 @@ copy_siginfo_to_user32 (compat_siginfo_t __user *to, siginfo_t *from) } return err; } + +asmlinkage long compat_sys_rt_sigqueueinfo(int pid, int sig, + struct compat_siginfo __user *uinfo) +{ + siginfo_t info; + + if (copy_siginfo_from_user32(&info, uinfo)) + return -EFAULT; + + /* Not even root can pretend to send signals from the kernel. + Nor can they impersonate a kill(), which adds source info. */ + if (info.si_code >= 0) + return -EPERM; + info.si_signo = sig; + + /* POSIX.1b doesn't mention process groups. */ + return kill_proc_info(sig, &info, pid); +} + |