On Fri, Jan 17, 2020 at 04:06:13PM +0100, Francesco Giudici wrote: > When remote-viewer is started from terminal, CTRL-C sends a SIGINT > signal to the program causing immediate termination. On linux clients > usb redirected devices are left without any kernel driver attached, > causing them to appear as no more available to the host. > Add a SIGINT handler to allow a clean exit, in particular to allow > the kernel to attach back the host driver. > The issue is present on linux only. > > To perform usb device redirection, virt-viewer leverages spice-gtk > library, which in turn relies on usbredir library, which uses libusb. > In order to take control of the usb device the auto-loaded kernel > driver must be detached. This is achieved (in the very end) with > libusb_detach_kernel_driver(). Then the device interfaces can be claimed > with libusb_claim_interface() and get in control to the application. > During normal application termination, the usb channel is teared down, > performing a reset of the usb device and giving back the control of the > device to the kernel (libusb_attach_kernel_driver()). > If the application quits without doing this, the device interfaces will > end up with no driver attached, making them not usable in the host > system. > > Note that enabling libusb_set_auto_detach_kernel_driver() does not solve > the issue, as this is just a convenient API from libusb: libusb will > take care of detaching/attaching the driver to the interfaces of the usb > device each time a call to libusb_release_interface() and > libusb_claim_interface() is performed. An unexpected quit of the > application will skip the libusb_release_interface() call too, leaving > the interfaces without any driver attached. > > Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1713311 > > Signed-off-by: Francesco Giudici <fgiudici@xxxxxxxxxx> > --- > src/virt-viewer-app.c | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) Thanks, this is merged Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|