diff --git a/repos/dde_linux/src/lib/usb/raw/raw.cc b/repos/dde_linux/src/lib/usb/raw/raw.cc index 419c5dee6..0e39b6a3b 100644 --- a/repos/dde_linux/src/lib/usb/raw/raw.cc +++ b/repos/dde_linux/src/lib/usb/raw/raw.cc @@ -576,6 +576,13 @@ class Usb::Session_component : public Session_rpc_object, ~Session_component() { + /* release claimed interfaces */ + if (_device) { + unsigned const num = _device->udev->actconfig->desc.bNumInterfaces; + for (unsigned i = 0; i < num; i++) + release_interface(i); + } + _worker.stop(); }