From 070ecb480a8ab0b0bbd176d2deabe429c3f42135 Mon Sep 17 00:00:00 2001 From: dongjiuzhu1 Date: Wed, 29 Nov 2023 10:01:23 +0800 Subject: [PATCH] drivers/usbdev_fs: report POLLHUP when disconnect Signed-off-by: dongjiuzhu1 --- drivers/usbdev/usbdev_fs.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/drivers/usbdev/usbdev_fs.c b/drivers/usbdev/usbdev_fs.c index e7b1bc0982d..5f07883a235 100644 --- a/drivers/usbdev/usbdev_fs.c +++ b/drivers/usbdev/usbdev_fs.c @@ -786,14 +786,6 @@ static int usbdev_fs_poll(FAR struct file *filep, FAR struct pollfd *fds, return ret; } - /* Check if the usbdev device has been unbind */ - - if (fs_ep->unlinked) - { - nxmutex_unlock(&fs_ep->lock); - return -ENOTCONN; - } - if (!setup) { /* This is a request to tear down the poll. */ @@ -838,9 +830,16 @@ static int usbdev_fs_poll(FAR struct file *filep, FAR struct pollfd *fds, eventset = 0; + /* Check if the usbdev device has been unbind */ + + if (fs_ep->unlinked) + { + eventset |= POLLHUP; + } + /* Notify the POLLIN/POLLOUT event if at least one request is available */ - if (!sq_empty(&fs_ep->reqq)) + else if (!sq_empty(&fs_ep->reqq)) { if (USB_ISEPIN(fs_ep->ep->eplog)) {