diff options
author | Kyle McMartin <kyle@athena.road.mcmartin.ca> | 2007-02-08 19:38:54 -0500 |
---|---|---|
committer | Kyle McMartin <kyle@athena.road.mcmartin.ca> | 2007-02-17 01:19:59 -0500 |
commit | d104f11c3989b0bbe1216f6ad663d0ed91fb7bd8 (patch) | |
tree | caea3ed8061cc6752392cfd0648e134e15632f08 | |
parent | 992378a06413116c6a7cf2ad597e096589e531aa (diff) |
[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>
-rw-r--r-- | arch/parisc/kernel/signal32.c | 21 | ||||
-rw-r--r-- | arch/parisc/kernel/syscall_table.S | 2 |
2 files changed, 22 insertions, 1 deletions
diff --git a/arch/parisc/kernel/signal32.c b/arch/parisc/kernel/signal32.c index a6b4231cafa1..2cbb4af15a19 100644 --- a/arch/parisc/kernel/signal32.c +++ b/arch/parisc/kernel/signal32.c | |||
@@ -1,6 +1,8 @@ | |||
1 | /* Signal support for 32-bit kernel builds | 1 | /* Signal support for 32-bit kernel builds |
2 | * | 2 | * |
3 | * Copyright (C) 2001 Matthew Wilcox <willy at parisc-linux.org> | 3 | * Copyright (C) 2001 Matthew Wilcox <willy at parisc-linux.org> |
4 | * Copyright (C) 2006 Kyle McMartin <kyle at parisc-linux.org> | ||
5 | * | ||
4 | * Code was mostly borrowed from kernel/signal.c. | 6 | * Code was mostly borrowed from kernel/signal.c. |
5 | * See kernel/signal.c for additional Copyrights. | 7 | * See kernel/signal.c for additional Copyrights. |
6 | * | 8 | * |
@@ -498,3 +500,22 @@ copy_siginfo_to_user32 (compat_siginfo_t __user *to, siginfo_t *from) | |||
498 | } | 500 | } |
499 | return err; | 501 | return err; |
500 | } | 502 | } |
503 | |||
504 | asmlinkage long compat_sys_rt_sigqueueinfo(int pid, int sig, | ||
505 | struct compat_siginfo __user *uinfo) | ||
506 | { | ||
507 | siginfo_t info; | ||
508 | |||
509 | if (copy_siginfo_from_user32(&info, uinfo)) | ||
510 | return -EFAULT; | ||
511 | |||
512 | /* Not even root can pretend to send signals from the kernel. | ||
513 | Nor can they impersonate a kill(), which adds source info. */ | ||
514 | if (info.si_code >= 0) | ||
515 | return -EPERM; | ||
516 | info.si_signo = sig; | ||
517 | |||
518 | /* POSIX.1b doesn't mention process groups. */ | ||
519 | return kill_proc_info(sig, &info, pid); | ||
520 | } | ||
521 | |||
diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S index 7651e54ddbbb..511466611e96 100644 --- a/arch/parisc/kernel/syscall_table.S +++ b/arch/parisc/kernel/syscall_table.S | |||
@@ -282,7 +282,7 @@ | |||
282 | * to worry about faulting trying to copy in a larger 64-bit | 282 | * to worry about faulting trying to copy in a larger 64-bit |
283 | * struct from a 32-bit user-space app. | 283 | * struct from a 32-bit user-space app. |
284 | */ | 284 | */ |
285 | ENTRY_SAME(rt_sigqueueinfo) | 285 | ENTRY_COMP(rt_sigqueueinfo) |
286 | ENTRY_COMP(rt_sigsuspend) | 286 | ENTRY_COMP(rt_sigsuspend) |
287 | ENTRY_SAME(chown) /* 180 */ | 287 | ENTRY_SAME(chown) /* 180 */ |
288 | /* setsockopt() used by iptables: SO_SET_REPLACE/SO_SET_ADD_COUNTERS */ | 288 | /* setsockopt() used by iptables: SO_SET_REPLACE/SO_SET_ADD_COUNTERS */ |