From f21cc2bfb0fd0d8bd403c065a31a7cd9fb75c1b6 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Wed, 16 Oct 2024 16:07:32 -0400 Subject: [PATCH] USB: Cancel queued transfers before waiting for idle. Otherwise, stuck transfers will cause us to hit the not-idle assertion. Should fix #19180. --- src/add-ons/kernel/bus_managers/usb/Pipe.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/add-ons/kernel/bus_managers/usb/Pipe.cpp b/src/add-ons/kernel/bus_managers/usb/Pipe.cpp index 3362e8bbf7..6e00d8db47 100644 --- a/src/add-ons/kernel/bus_managers/usb/Pipe.cpp +++ b/src/add-ons/kernel/bus_managers/usb/Pipe.cpp @@ -21,9 +21,10 @@ Pipe::Pipe(Object *parent) Pipe::~Pipe() { - PutUSBID(); - + PutUSBID(false); Pipe::CancelQueuedTransfers(true); + WaitForIdle(); + GetBusManager()->NotifyPipeChange(this, USB_CHANGE_DESTROYED); }