diff options
| author | hathach <[email protected]> | 2026-08-12 22:37:06 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2026-08-12 22:41:17 +0700 |
| commit | a52562b2be7ea728a176ae94d8a18d9ae0a4423a (patch) | |
| tree | a9bf72e78870c92deee6896e276c4b9c04b30cb5 | |
| parent | a0249ada9096365697340031a7b4a285beb18a2b (diff) | |
usbd: clear the queued-setup counter on bus reset
A SETUP counted before a bus reset must not be carried across it: the
consumer would either skip a post-reset SETUP (count drained by the
stale entry) or, if the count leaked high for any other reason, skip
them all. usbd_reset() now zeroes the counter; the consumer already
guards on zero, and any pre-reset SETUP still in the queue is stale by
definition and correctly discarded.
| -rw-r--r-- | src/device/usbd.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/device/usbd.c b/src/device/usbd.c index b77b766dd..79802e70f 100644 --- a/src/device/usbd.c +++ b/src/device/usbd.c @@ -642,6 +642,8 @@ static void configuration_reset(uint8_t rhport) { static void usbd_reset(uint8_t rhport) { configuration_reset(rhport); + // discard any pre-reset SETUP still counted: a stale count skips post-reset SETUPs + _usbd_queued_setup = 0; } bool tud_task_event_ready(void) { |
