diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 2016-05-31 22:14:44 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 2016-05-31 22:14:44 +0000 |
commit | 10f077b6cd7ffb9247efa24804dff53c15dfde7c (patch) | |
tree | 9cdab441e1ff9372e29af8235353c4daf8189ea7 | |
parent | b65a2be3b9446560ae2b6e43171ccf3dddcae409 (diff) |
sys_o58_kill is no longer needed for compat.
ok guenther sthen
-rw-r--r-- | sys/kern/kern_pledge.c | 3 | ||||
-rw-r--r-- | sys/kern/kern_sig.c | 59 |
2 files changed, 2 insertions, 60 deletions
diff --git a/sys/kern/kern_pledge.c b/sys/kern/kern_pledge.c index 6ea4c3b10fa..7a16e258537 100644 --- a/sys/kern/kern_pledge.c +++ b/sys/kern/kern_pledge.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kern_pledge.c,v 1.168 2016/05/31 22:12:26 deraadt Exp $ */ +/* $OpenBSD: kern_pledge.c,v 1.169 2016/05/31 22:14:43 deraadt Exp $ */ /* * Copyright (c) 2015 Nicholas Marriott <nicm@openbsd.org> @@ -230,7 +230,6 @@ const uint64_t pledge_syscalls[SYS_MAXSYSCALL] = { * Can kill self with "stdio". Killing another pid * requires "proc" */ - [SYS_o58_kill] = PLEDGE_STDIO, [SYS_kill] = PLEDGE_STDIO, /* diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index 23ead64a7e5..8778115ce39 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kern_sig.c,v 1.196 2016/03/29 08:46:08 mpi Exp $ */ +/* $OpenBSD: kern_sig.c,v 1.197 2016/05/31 22:14:43 deraadt Exp $ */ /* $NetBSD: kern_sig.c,v 1.54 1996/04/22 01:38:32 christos Exp $ */ /* @@ -560,63 +560,6 @@ sys_sigaltstack(struct proc *p, void *v, register_t *retval) } int -sys_o58_kill(struct proc *cp, void *v, register_t *retval) -{ - struct sys_o58_kill_args /* { - syscallarg(int) pid; - syscallarg(int) signum; - } */ *uap = v; - struct proc *p; - int pid = SCARG(uap, pid); - int signum = SCARG(uap, signum); - int error; - - if (pid <= THREAD_PID_OFFSET && (error = pledge_kill(cp, pid)) != 0) - return (error); - if (((u_int)signum) >= NSIG) - return (EINVAL); - if (pid > 0) { - enum signal_type type = SPROCESS; - - /* - * If the target pid is > THREAD_PID_OFFSET then this - * must be a kill of another thread in the same process. - * Otherwise, this is a process kill and the target must - * be a main thread. - */ - if (pid > THREAD_PID_OFFSET) { - if ((p = pfind(pid - THREAD_PID_OFFSET)) == NULL) - return (ESRCH); - if (p->p_p != cp->p_p) - return (ESRCH); - type = STHREAD; - } else { - /* XXX use prfind() */ - if ((p = pfind(pid)) == NULL) - return (ESRCH); - if (p->p_flag & P_THREAD) - return (ESRCH); - if (!cansignal(cp, p->p_p, signum)) - return (EPERM); - } - - /* kill single process or thread */ - if (signum) - ptsignal(p, signum, type); - return (0); - } - switch (pid) { - case -1: /* broadcast signal */ - return (killpg1(cp, signum, 0, 1)); - case 0: /* signal own process group */ - return (killpg1(cp, signum, 0, 0)); - default: /* negative explicit process group */ - return (killpg1(cp, signum, -pid, 0)); - } - /* NOTREACHED */ -} - -int sys_kill(struct proc *cp, void *v, register_t *retval) { struct sys_kill_args /* { |