diff options
author | Bruno Prémont <bonbons@linux-vserver.org> | 2010-03-15 09:55:40 -0400 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2010-03-15 09:55:40 -0400 |
commit | 4da361b69102cdffe73006771eae7504d2cb8736 (patch) | |
tree | c6603f821d4eb3711571e1346185d1d2bd795b03 /drivers/hid/hid-core.c | |
parent | a85821fce2c100a6680511f9693b76f9717fbdee (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.c | 5 |
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 | } |