From 46e4c3dc9b20532738097177d7e1e6c55e37ffa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Fri, 29 Jan 2016 16:28:41 +0100 Subject: [PATCH] usb_drv: release interfaces on Usb session close Interfaces that have been claimed by a component always have to be released when the session is closed in case the component malfunctioned. Fixes #1869. --- repos/dde_linux/src/lib/usb/raw/raw.cc | 7 +++++++ 1 file changed, 7 insertions(+) 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(); }