HID: hid-uclogic-params: Invalid parameter check in uclogic_params_init
[linux-block.git] / drivers / hid / hid-uclogic-params.c
index 3d67b748a3b959f4febddc2db3f7a3f408924256..3c10b858cf74c68993bc610e75fdefaee1d0e78d 100644 (file)
@@ -834,21 +834,25 @@ int uclogic_params_init(struct uclogic_params *params,
                        struct hid_device *hdev)
 {
        int rc;
-       struct usb_device *udev = hid_to_usb_dev(hdev);
-       __u8  bNumInterfaces = udev->config->desc.bNumInterfaces;
-       struct usb_interface *iface = to_usb_interface(hdev->dev.parent);
-       __u8 bInterfaceNumber = iface->cur_altsetting->desc.bInterfaceNumber;
+       struct usb_device *udev;
+       __u8  bNumInterfaces;
+       struct usb_interface *iface;
+       __u8 bInterfaceNumber;
        bool found;
        /* The resulting parameters (noop) */
        struct uclogic_params p = {0, };
 
        /* Check arguments */
-       if (params == NULL || hdev == NULL ||
-           !hid_is_using_ll_driver(hdev, &usb_hid_driver)) {
+       if (params == NULL || hdev == NULL || !hid_is_usb(hdev)) {
                rc = -EINVAL;
                goto cleanup;
        }
 
+       udev = hid_to_usb_dev(hdev);
+       bNumInterfaces = udev->config->desc.bNumInterfaces;
+       iface = to_usb_interface(hdev->dev.parent);
+       bInterfaceNumber = iface->cur_altsetting->desc.bInterfaceNumber;
+
        /*
         * Set replacement report descriptor if the original matches the
         * specified size. Otherwise keep interface unchanged.