The write socket should be passed to the write filter otherwise checks
are performed against the wrong socket.
ok?
Index: miscfs/fifofs/fifo_vnops.c
===================================================================
RCS file: /cvs/src/sys/miscfs/fifofs/fifo_vnops.c,v
retrieving revision 1.73
diff -u -p -r1.73 fifo_vnops.c
--- miscfs/fifofs/fifo_vnops.c 20 Feb 2020 16:56:52 -0000 1.73
+++ miscfs/fifofs/fifo_vnops.c 7 Apr 2020 10:06:13 -0000
@@ -507,16 +507,19 @@ int
fifo_kqfilter(void *v)
{
struct vop_kqfilter_args *ap = v;
- struct socket *so = (struct socket *)ap->a_vp->v_fifoinfo->fi_readsock;
+ struct socket *so;
+ struct fifoinfo *fip = ap->a_vp->v_fifoinfo;
struct sockbuf *sb;
switch (ap->a_kn->kn_filter) {
case EVFILT_READ:
ap->a_kn->kn_fop = &fiforead_filtops;
+ so = fip->fi_readsock;
sb = &so->so_rcv;
break;
case EVFILT_WRITE:
ap->a_kn->kn_fop = &fifowrite_filtops;
+ so = fip->fi_writesock;
sb = &so->so_snd;
break;
default: