]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/fx2lafw/protocol.c
fx2lafw: Fix segfault wrt libusb_detach_kernel_driver().
[libsigrok.git] / src / hardware / fx2lafw / protocol.c
index 11e3504e7948b7b6a8899fe51f9e601d85181ab5..b1c20a7159b2f3794dc29047c49b041bb325ca5c 100644 (file)
@@ -244,6 +244,16 @@ SR_PRIV int fx2lafw_dev_open(struct sr_dev_inst *sdi, struct sr_dev_driver *di)
                        break;
                }
 
+               if (libusb_has_capability(LIBUSB_CAP_SUPPORTS_DETACH_KERNEL_DRIVER)) {
+                       if (libusb_kernel_driver_active(usb->devhdl, 0) == 1) {
+                               if ((ret = libusb_detach_kernel_driver(usb->devhdl, 0)) < 0) {
+                                       sr_err("Failed to detach kernel driver: %s.",
+                                               libusb_error_name(ret));
+                                       return SR_ERR;
+                               }
+                       }
+               }
+
                ret = command_get_fw_version(usb->devhdl, &vi);
                if (ret != SR_OK) {
                        sr_err("Failed to get firmware version.");