]> sigrok.org Git - libsigrok.git/commitdiff
Fix kernel driver attached check
authorBert Vermeulen <redacted>
Sun, 7 Apr 2013 12:14:16 +0000 (14:14 +0200)
committerBert Vermeulen <redacted>
Sun, 7 Apr 2013 12:14:16 +0000 (14:14 +0200)
The check is really only broken on darwin, but useful on all other
platforms, even if only Linux can actually detach a driver.

hardware/common/ezusb.c

index 77817a71bc36c1bc0f9307087ad5232ff11054ed..5e551b4f942297d6fe8d3596ef7aeee9c23b03c2 100644 (file)
@@ -108,9 +108,12 @@ SR_PRIV int ezusb_upload_firmware(libusb_device *dev, int configuration,
                return SR_ERR;
        }
 
-/* Neither Windows/MinGW nor Darwin/Mac support these libusb-1.0 calls. */
-#if !defined(_WIN32) && !defined(__APPLE__)
-       if (libusb_kernel_driver_active(hdl, 0)) {
+/*
+ * The libusbx darwin backend is broken: it can report a kernel driver being
+ * active, but detaching it always returns an error.
+ */
+#if !defined(__APPLE__)
+       if (libusb_kernel_driver_active(hdl, 0) == 1) {
                if ((ret = libusb_detach_kernel_driver(hdl, 0)) < 0) {
                        sr_err("failed to detach kernel driver: %s",
                                        libusb_error_name(ret));