git: 20d32249196e - stable/13 - uhid(4): Don't read-ahead from the USB IN endpoint.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 30 Jun 2022 09:40:14 UTC
The branch stable/13 has been updated by hselasky: URL: https://cgit.FreeBSD.org/src/commit/?id=20d32249196ea6122b481bd61841337a67855337 commit 20d32249196ea6122b481bd61841337a67855337 Author: Hans Petter Selasky <hselasky@FreeBSD.org> AuthorDate: 2022-06-23 17:39:21 +0000 Commit: Hans Petter Selasky <hselasky@FreeBSD.org> CommitDate: 2022-06-30 09:39:43 +0000 uhid(4): Don't read-ahead from the USB IN endpoint. This avoids an issue where IN endpoint data received from the device right before the file handle is closed, gets lost. PR: 263995 Sponsored by: NVIDIA Networking (cherry picked from commit b6f615255d8bcdf40604005b11998eee86872364) --- sys/dev/usb/input/uhid.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sys/dev/usb/input/uhid.c b/sys/dev/usb/input/uhid.c index 97f9b1c8edea..cbab992a1343 100644 --- a/sys/dev/usb/input/uhid.c +++ b/sys/dev/usb/input/uhid.c @@ -218,6 +218,12 @@ uhid_intr_read_callback(struct usb_xfer *xfer, usb_error_t error) actlen = sc->sc_isize; usb_fifo_put_data(sc->sc_fifo.fp[USB_FIFO_RX], pc, 0, actlen, 1); + + /* + * Do not do read-ahead, because this may lead + * to data loss! + */ + return; } else { /* ignore it */ DPRINTF("ignored transfer, %d bytes\n", actlen);