From f3184ac14f03da17bde002ccff8abf43076b34bc Mon Sep 17 00:00:00 2001 From: Theo de Raadt Date: Sat, 31 Oct 2009 06:40:18 +0000 Subject: Add missing KNOTE() calls after selwakeup(), until we decide if the KNOTE() calls can go directly into selwakeup() safely long discussion with nicm, murmers of consent from tedu and miod, noone else seems to care of kqueue is busted as long as it makes their sockets move data fast... pretty sad. --- sys/dev/usb/ucom.c | 3 ++- sys/dev/usb/ugen.c | 4 +++- sys/dev/usb/uhid.c | 3 ++- sys/dev/usb/usb.c | 3 ++- 4 files changed, 9 insertions(+), 4 deletions(-) (limited to 'sys/dev/usb') diff --git a/sys/dev/usb/ucom.c b/sys/dev/usb/ucom.c index 1de3fca03ec..a0e1b28c731 100644 --- a/sys/dev/usb/ucom.c +++ b/sys/dev/usb/ucom.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ucom.c,v 1.43 2009/10/13 19:33:17 pirofti Exp $ */ +/* $OpenBSD: ucom.c,v 1.44 2009/10/31 06:40:17 deraadt Exp $ */ /* $NetBSD: ucom.c,v 1.49 2003/01/01 00:10:25 thorpej Exp $ */ /* @@ -949,6 +949,7 @@ ucomstart(struct tty *tp) wakeup(&tp->t_outq); } selwakeup(&tp->t_wsel); + KNOTE(&tp->t_wsel.si_note, 0); if (tp->t_outq.c_cc == 0) goto out; } diff --git a/sys/dev/usb/ugen.c b/sys/dev/usb/ugen.c index c4998f7e2fd..c90c58dcc5a 100644 --- a/sys/dev/usb/ugen.c +++ b/sys/dev/usb/ugen.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ugen.c,v 1.59 2009/10/13 19:33:17 pirofti Exp $ */ +/* $OpenBSD: ugen.c,v 1.60 2009/10/31 06:40:17 deraadt Exp $ */ /* $NetBSD: ugen.c,v 1.63 2002/11/26 18:49:48 christos Exp $ */ /* $FreeBSD: src/sys/dev/usb/ugen.c,v 1.26 1999/11/17 22:33:41 n_hibma Exp $ */ @@ -822,6 +822,7 @@ ugenintr(usbd_xfer_handle xfer, usbd_private_handle addr, usbd_status status) wakeup(sce); } selwakeup(&sce->rsel); + KNOTE(&sce->rsel.si_note, 0); } void @@ -881,6 +882,7 @@ ugen_isoc_rintr(usbd_xfer_handle xfer, usbd_private_handle addr, wakeup(sce); } selwakeup(&sce->rsel); + KNOTE(&sce->rsel.si_note, 0); } usbd_status diff --git a/sys/dev/usb/uhid.c b/sys/dev/usb/uhid.c index f9af66a7437..76e0dda1246 100644 --- a/sys/dev/usb/uhid.c +++ b/sys/dev/usb/uhid.c @@ -1,4 +1,4 @@ -/* $OpenBSD: uhid.c,v 1.44 2009/10/13 19:33:19 pirofti Exp $ */ +/* $OpenBSD: uhid.c,v 1.45 2009/10/31 06:40:17 deraadt Exp $ */ /* $NetBSD: uhid.c,v 1.57 2003/03/11 16:44:00 augustss Exp $ */ /* @@ -234,6 +234,7 @@ uhid_intr(struct uhidev *addr, void *data, u_int len) wakeup(&sc->sc_q); } selwakeup(&sc->sc_rsel); + KNOTE(&sc->sc_rsel.si_note, 0); if (sc->sc_async != NULL) { DPRINTFN(3, ("uhid_intr: sending SIGIO %p\n", sc->sc_async)); psignal(sc->sc_async, SIGIO); diff --git a/sys/dev/usb/usb.c b/sys/dev/usb/usb.c index d64559e56be..222aa200cd5 100644 --- a/sys/dev/usb/usb.c +++ b/sys/dev/usb/usb.c @@ -1,4 +1,4 @@ -/* $OpenBSD: usb.c,v 1.59 2009/10/13 19:33:19 pirofti Exp $ */ +/* $OpenBSD: usb.c,v 1.60 2009/10/31 06:40:17 deraadt Exp $ */ /* $NetBSD: usb.c,v 1.77 2003/01/01 00:10:26 thorpej Exp $ */ /* @@ -770,6 +770,7 @@ usb_add_event(int type, struct usb_event *uep) SIMPLEQ_INSERT_TAIL(&usb_events, ueq, next); wakeup(&usb_events); selwakeup(&usb_selevent); + KNOTE(&usb_selevent.si_note, 0); if (usb_async_proc != NULL) psignal(usb_async_proc, SIGIO); splx(s); -- cgit v1.2.3