aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/signal.c
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2009-01-14 08:14:11 -0500
committerHeiko Carstens <heiko.carstens@de.ibm.com>2009-01-14 08:15:21 -0500
commita5f8fa9e9ba5ef3305e147f41ad6e1e84ac1f0bd (patch)
treea9bedc6890d6379f0839c280a20c5da3bd9f2352 /kernel/signal.c
parent17da2bd90abf428523de0fb98f7075e00e3ed42e (diff)
[CVE-2009-0029] System call wrappers part 09
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Diffstat (limited to 'kernel/signal.c')
-rw-r--r--kernel/signal.c21
1 files changed, 8 insertions, 13 deletions
diff --git a/kernel/signal.c b/kernel/signal.c
index 278cc8737f17..e2333929611a 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -2279,7 +2279,7 @@ static int do_tkill(pid_t tgid, pid_t pid, int sig)
2279 * exists but it's not belonging to the target process anymore. This 2279 * exists but it's not belonging to the target process anymore. This
2280 * method solves the problem of threads exiting and PIDs getting reused. 2280 * method solves the problem of threads exiting and PIDs getting reused.
2281 */ 2281 */
2282asmlinkage long sys_tgkill(pid_t tgid, pid_t pid, int sig) 2282SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid_t, pid, int, sig)
2283{ 2283{
2284 /* This is only valid for single tasks */ 2284 /* This is only valid for single tasks */
2285 if (pid <= 0 || tgid <= 0) 2285 if (pid <= 0 || tgid <= 0)
@@ -2291,8 +2291,7 @@ asmlinkage long sys_tgkill(pid_t tgid, pid_t pid, int sig)
2291/* 2291/*
2292 * Send a signal to only one task, even if it's a CLONE_THREAD task. 2292 * Send a signal to only one task, even if it's a CLONE_THREAD task.
2293 */ 2293 */
2294asmlinkage long 2294SYSCALL_DEFINE2(tkill, pid_t, pid, int, sig)
2295sys_tkill(pid_t pid, int sig)
2296{ 2295{
2297 /* This is only valid for single tasks */ 2296 /* This is only valid for single tasks */
2298 if (pid <= 0) 2297 if (pid <= 0)
@@ -2301,8 +2300,8 @@ sys_tkill(pid_t pid, int sig)
2301 return do_tkill(0, pid, sig); 2300 return do_tkill(0, pid, sig);
2302} 2301}
2303 2302
2304asmlinkage long 2303SYSCALL_DEFINE3(rt_sigqueueinfo, pid_t, pid, int, sig,
2305sys_rt_sigqueueinfo(pid_t pid, int sig, siginfo_t __user *uinfo) 2304 siginfo_t __user *, uinfo)
2306{ 2305{
2307 siginfo_t info; 2306 siginfo_t info;
2308 2307
@@ -2526,15 +2525,13 @@ out:
2526/* 2525/*
2527 * For backwards compatibility. Functionality superseded by sigprocmask. 2526 * For backwards compatibility. Functionality superseded by sigprocmask.
2528 */ 2527 */
2529asmlinkage long 2528SYSCALL_DEFINE0(sgetmask)
2530sys_sgetmask(void)
2531{ 2529{
2532 /* SMP safe */ 2530 /* SMP safe */
2533 return current->blocked.sig[0]; 2531 return current->blocked.sig[0];
2534} 2532}
2535 2533
2536asmlinkage long 2534SYSCALL_DEFINE1(ssetmask, int, newmask)
2537sys_ssetmask(int newmask)
2538{ 2535{
2539 int old; 2536 int old;
2540 2537
@@ -2554,8 +2551,7 @@ sys_ssetmask(int newmask)
2554/* 2551/*
2555 * For backwards compatibility. Functionality superseded by sigaction. 2552 * For backwards compatibility. Functionality superseded by sigaction.
2556 */ 2553 */
2557asmlinkage long 2554SYSCALL_DEFINE2(signal, int, sig, __sighandler_t, handler)
2558sys_signal(int sig, __sighandler_t handler)
2559{ 2555{
2560 struct k_sigaction new_sa, old_sa; 2556 struct k_sigaction new_sa, old_sa;
2561 int ret; 2557 int ret;
@@ -2572,8 +2568,7 @@ sys_signal(int sig, __sighandler_t handler)
2572 2568
2573#ifdef __ARCH_WANT_SYS_PAUSE 2569#ifdef __ARCH_WANT_SYS_PAUSE
2574 2570
2575asmlinkage long 2571SYSCALL_DEFINE0(pause)
2576sys_pause(void)
2577{ 2572{
2578 current->state = TASK_INTERRUPTIBLE; 2573 current->state = TASK_INTERRUPTIBLE;
2579 schedule(); 2574 schedule();