diff options
-rw-r--r-- | sys/dev/usb/usb_dev.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/sys/dev/usb/usb_dev.c b/sys/dev/usb/usb_dev.c index d206340..512b1f8 100644 --- a/sys/dev/usb/usb_dev.c +++ b/sys/dev/usb/usb_dev.c @@ -1072,16 +1072,12 @@ usb2_poll(struct cdev* dev, int events, struct thread* td) struct usb2_cdev_privdata* cpd; struct usb2_fifo *f; struct usb2_mbuf *m; - int fflags; - int err, revents; - - err = devfs_get_cdevpriv((void **)&cpd); - if (err != 0) - return (err); + int fflags, revents; - err = usb2_ref_device(cpd, 0 /* no uref */ ); - if (err) - return (POLLHUP); + if (devfs_get_cdevpriv((void **)&cpd) != 0 || + usb2_ref_device(cpd, 0) != 0) + return (events & + (POLLHUP|POLLIN|POLLRDNORM|POLLOUT|POLLWRNORM)); fflags = cpd->fflags; |