summaryrefslogtreecommitdiffstats
path: root/sys/kern/sys_generic.c
diff options
context:
space:
mode:
authorvisa <visa@openbsd.org>2020-01-08 16:27:40 +0000
committervisa <visa@openbsd.org>2020-01-08 16:27:40 +0000
commit36b1b8b4dfaf3411193c17c2462937014292f2df (patch)
tree81f30bc60ac32c23151dd9b7753c67c177381297 /sys/kern/sys_generic.c
parentConvert infinite sleeps to tsleep_nsec(9). (diff)
downloadwireguard-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.c26
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;