diff options
| author | 2020-01-08 16:27:40 +0000 | |
|---|---|---|
| committer | 2020-01-08 16:27:40 +0000 | |
| commit | 36b1b8b4dfaf3411193c17c2462937014292f2df (patch) | |
| tree | 81f30bc60ac32c23151dd9b7753c67c177381297 /sys/kern/sys_generic.c | |
| parent | Convert infinite sleeps to tsleep_nsec(9). (diff) | |
| download | wireguard-openbsd-36b1b8b4dfaf3411193c17c2462937014292f2df.tar.xz wireguard-openbsd-36b1b8b4dfaf3411193c17c2462937014292f2df.zip | |
Unify handling of ioctls FIOSETOWN/SIOCSPGRP/TIOCSPGRP and
FIOGETOWN/SIOCGPGRP/TIOCGPGRP. Do this by determining the meaning of
the ID parameter inside the sigio code. Also add cases for FIOSETOWN
and FIOGETOWN where there have been TIOCSPGRP and TIOCGPGRP before.
These changes allow removing the ID translation from sys_fcntl() and
sys_ioctl().
Idea from NetBSD
OK mpi@, claudio@
Diffstat (limited to 'sys/kern/sys_generic.c')
| -rw-r--r-- | sys/kern/sys_generic.c | 26 |
1 files changed, 1 insertions, 25 deletions
diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c index 2fd7d6ec035..b2870249c99 100644 --- a/sys/kern/sys_generic.c +++ b/sys/kern/sys_generic.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sys_generic.c,v 1.126 2019/10/03 18:47:19 cheloha Exp $ */ +/* $OpenBSD: sys_generic.c,v 1.127 2020/01/08 16:27:41 visa Exp $ */ /* $NetBSD: sys_generic.c,v 1.24 1996/03/29 00:25:32 cgd Exp $ */ /* @@ -489,30 +489,6 @@ sys_ioctl(struct proc *p, void *v, register_t *retval) error = (*fp->f_ops->fo_ioctl)(fp, FIOASYNC, (caddr_t)&tmp, p); break; - case FIOSETOWN: - tmp = *(int *)data; - - if (fp->f_type == DTYPE_SOCKET || fp->f_type == DTYPE_PIPE) { - /* nothing */ - } else if (tmp <= 0) { - tmp = -tmp; - } else { - struct process *pr = prfind(tmp); - if (pr == NULL) { - error = ESRCH; - break; - } - tmp = pr->ps_pgrp->pg_id; - } - error = (*fp->f_ops->fo_ioctl) - (fp, TIOCSPGRP, (caddr_t)&tmp, p); - break; - - case FIOGETOWN: - error = (*fp->f_ops->fo_ioctl)(fp, TIOCGPGRP, data, p); - *(int *)data = -*(int *)data; - break; - default: error = (*fp->f_ops->fo_ioctl)(fp, com, data, p); break; |
