diff options
author | Dan Carpenter <error27@gmail.com> | 2011-08-24 13:27:46 +0200 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2011-08-24 16:39:23 +0200 |
commit | ba623a774f5b529f89b3d63e0837df52e16ffb3b (patch) | |
tree | 445b7da37ff5d883e5aaa3159950c89936d944b1 | |
parent | HID: hid-debug: Show application usage for each collection. (diff) | |
download | linux-ba623a774f5b529f89b3d63e0837df52e16ffb3b.tar.xz linux-ba623a774f5b529f89b3d63e0837df52e16ffb3b.zip |
HID: unlock on error path in hid_device_probe()
We recently introduced locking into this function, but we missed an
error path which needs an unlock.
Signed-off-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
-rw-r--r-- | drivers/hid/hid-core.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index d34eb34dbe25..d98332b11009 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c @@ -1642,8 +1642,10 @@ static int hid_device_probe(struct device *dev) if (!hdev->driver) { id = hid_match_device(hdev, hdrv); - if (id == NULL) - return -ENODEV; + if (id == NULL) { + ret = -ENODEV; + goto unlock; + } hdev->driver = hdrv; if (hdrv->probe) { @@ -1656,7 +1658,7 @@ static int hid_device_probe(struct device *dev) if (ret) hdev->driver = NULL; } - +unlock: up(&hdev->driver_lock); return ret; } |