diff options
| author | Andries E. Brouwer <andries.brouwer@cwi.nl> | 2003-02-10 17:23:38 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2003-02-10 17:23:38 -0800 |
| commit | 02bdc207da7a083f7fdc5c8be23804021906798e (patch) | |
| tree | 706ef463909b8e9ffc4cba1da607f7206613fb92 | |
| parent | 36dc13b901961bacd6a3ccee8ec9992c247964b7 (diff) | |
[PATCH] signal error return fix
| -rw-r--r-- | kernel/sys.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/kernel/sys.c b/kernel/sys.c index dffb67035c78..afa6d2fc1372 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -907,6 +907,7 @@ asmlinkage long sys_setpgid(pid_t pid, pid_t pgid) p = find_task_by_pid(pid); if (!p) goto out; + err = -EINVAL; if (!thread_group_leader(p)) goto out; @@ -918,11 +919,16 @@ asmlinkage long sys_setpgid(pid_t pid, pid_t pgid) err = -EACCES; if (p->did_exec) goto out; - } else if (p != current) - goto out; + } else { + err = -ESRCH; + if (p != current) + goto out; + } + err = -EPERM; if (p->leader) goto out; + if (pgid != pid) { struct task_struct *p; struct pid *pid; |
