aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKyle McMartin <kyle@athena.road.mcmartin.ca>2007-02-08 19:38:54 -0500
committerKyle McMartin <kyle@athena.road.mcmartin.ca>2007-02-17 01:19:59 -0500
commitd104f11c3989b0bbe1216f6ad663d0ed91fb7bd8 (patch)
treecaea3ed8061cc6752392cfd0648e134e15632f08
parent992378a06413116c6a7cf2ad597e096589e531aa (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.c21
-rw-r--r--arch/parisc/kernel/syscall_table.S2
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
504asmlinkage 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 */