[PATCH] Added a check for NULL pointer in hid_add_device

From: Michael Banken
Date: Tue Jun 25 2013 - 13:51:58 EST


This check greatly simplifies creating a dummy hid device.
With this check in place a hid dummy can be created simply by allocating and adding the device.
This used to be possible in earlier Kernel versions.

Signed-off-by: Michael Banken <michael.banken@xxxxxxxxxxxxxxxxxxxxxxxxxx>
Signed-off-by: Lorenz Haspel <lorenz@xxxxxxxxxxx>
---
drivers/hid/hid-core.c | 37 ++++++++++++++++++++-----------------
1 file changed, 20 insertions(+), 17 deletions(-)

diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 0951a9a..88c573e 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -2289,24 +2289,27 @@ int hid_add_device(struct hid_device *hdev)
if (hid_ignore(hdev))
return -ENODEV;

- /*
- * Read the device report descriptor once and use as template
- * for the driver-specific modifications.
- */
- ret = hdev->ll_driver->parse(hdev);
- if (ret)
- return ret;
- if (!hdev->dev_rdesc)
- return -ENODEV;
-
- /*
- * Scan generic devices for group information
- */
- if (hid_ignore_special_drivers ||
- !hid_match_id(hdev, hid_have_special_driver)) {
- ret = hid_scan_report(hdev);
+ if (hdev->ll_driver != NULL) {
+ /*
+ * Read the device report descriptor once and use as template
+ * for the driver-specific modifications.
+ */
+ ret = hdev->ll_driver->parse(hdev);
if (ret)
- hid_warn(hdev, "bad device descriptor (%d)\n", ret);
+ return ret;
+ if (!hdev->dev_rdesc)
+ return -ENODEV;
+
+ /*
+ * Scan generic devices for group information
+ */
+ if (hid_ignore_special_drivers ||
+ !hid_match_id(hdev, hid_have_special_driver)) {
+ ret = hid_scan_report(hdev);
+ if (ret)
+ hid_warn(hdev,
+ "bad device descriptor (%d)\n", ret);
+ }
}

/* XXX hack, any other cleaner solution after the driver core
--
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/