summaryrefslogtreecommitdiffstats
path: root/sys/kern/sys_socket.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_socket.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_socket.c')
-rw-r--r--sys/kern/sys_socket.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/sys/kern/sys_socket.c b/sys/kern/sys_socket.c
index a8eab48eeb0..55ec42ea8d0 100644
--- a/sys/kern/sys_socket.c
+++ b/sys/kern/sys_socket.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sys_socket.c,v 1.43 2020/01/05 13:46:02 visa Exp $ */
+/* $OpenBSD: sys_socket.c,v 1.44 2020/01/08 16:27:41 visa Exp $ */
/* $NetBSD: sys_socket.c,v 1.13 1995/08/12 23:59:09 mycroft Exp $ */
/*
@@ -111,18 +111,16 @@ soo_ioctl(struct file *fp, u_long cmd, caddr_t data, struct proc *p)
*(int *)data = so->so_rcv.sb_datacc;
break;
- case TIOCSPGRP:
- /* FALLTHROUGH */
+ case FIOSETOWN:
case SIOCSPGRP:
- error = sigio_setown(&so->so_sigio, *(int *)data);
- break;
-
- case TIOCGPGRP:
- *(int *)data = -sigio_getown(&so->so_sigio);
+ case TIOCSPGRP:
+ error = sigio_setown(&so->so_sigio, cmd, data);
break;
+ case FIOGETOWN:
case SIOCGPGRP:
- *(int *)data = sigio_getown(&so->so_sigio);
+ case TIOCGPGRP:
+ sigio_getown(&so->so_sigio, cmd, data);
break;
case SIOCATMARK: