aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid/hid-core.c
diff options
context:
space:
mode:
authorBruno Prémont <bonbons@linux-vserver.org>2010-03-15 09:55:40 -0400
committerJiri Kosina <jkosina@suse.cz>2010-03-15 09:55:40 -0400
commit4da361b69102cdffe73006771eae7504d2cb8736 (patch)
treec6603f821d4eb3711571e1346185d1d2bd795b03 /drivers/hid/hid-core.c
parenta85821fce2c100a6680511f9693b76f9717fbdee (diff)
HID: register debugfs entries before adding device
Register debugfs entries before calling device_add() so debugfs entries are already present when HID driver's probe function gets called on device hotplug. Also undo debugfs entry registration if device_add() fails so status HID_STAT_ADDED and debugfs registration status remain consistent and we don't leak the debugfs entries. Signed-off-by: Bruno Prémont <bonbons@linux-vserver.org> Cc: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid/hid-core.c')
-rw-r--r--drivers/hid/hid-core.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 368fbb0c4ca..7396f47c79d 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -1768,11 +1768,12 @@ int hid_add_device(struct hid_device *hdev)
1768 dev_set_name(&hdev->dev, "%04X:%04X:%04X.%04X", hdev->bus, 1768 dev_set_name(&hdev->dev, "%04X:%04X:%04X.%04X", hdev->bus,
1769 hdev->vendor, hdev->product, atomic_inc_return(&id)); 1769 hdev->vendor, hdev->product, atomic_inc_return(&id));
1770 1770
1771 hid_debug_register(hdev, dev_name(&hdev->dev));
1771 ret = device_add(&hdev->dev); 1772 ret = device_add(&hdev->dev);
1772 if (!ret) 1773 if (!ret)
1773 hdev->status |= HID_STAT_ADDED; 1774 hdev->status |= HID_STAT_ADDED;
1774 1775 else
1775 hid_debug_register(hdev, dev_name(&hdev->dev)); 1776 hid_debug_unregister(hdev);
1776 1777
1777 return ret; 1778 return ret;
1778} 1779}