HID: u2fzero: fail probe if not using USB transport
authorJiri Kosina <jkosina@suse.cz>
Wed, 17 Apr 2019 14:39:43 +0000 (16:39 +0200)
committerJiri Kosina <jkosina@suse.cz>
Wed, 17 Apr 2019 14:39:43 +0000 (16:39 +0200)
u2fzero driver is USB-only. Therefore we have to give up in ->probe()
callback in case we're called with non-USB transport driver bound,
otherwise the kernel will crash trying to use USBHID API on a non-USB
transport.

Fixes: 42337b9d4d958("HID: add driver for U2F Zero built-in LED and RNG")
Reported-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-u2fzero.c

index d11a5cb..95e0807 100644 (file)
@@ -286,6 +286,9 @@ static int u2fzero_probe(struct hid_device *hdev,
        unsigned int minor;
        int ret;
 
+       if (!hid_is_using_ll_driver(hdev, &usb_hid_driver))
+               return -EINVAL;
+
        dev = devm_kzalloc(&hdev->dev, sizeof(*dev), GFP_KERNEL);
        if (dev == NULL)
                return -ENOMEM;