summaryrefslogtreecommitdiffstats
path: root/drivers/hid/hid-core.c
diff options
context:
space:
mode:
authorJiri Kosina <jkosina@suse.cz>2013-04-16 15:40:09 -0700
committerJiri Kosina <jkosina@suse.cz>2013-04-30 10:09:31 +0200
commit2353f2bea307390e015493118e425152b8a5a431 (patch)
treebeb7fd2471690bbd8b0d0982c3b1f40f6784adba /drivers/hid/hid-core.c
parenta5f04b9df1113e0c16271afe5e43028f0d763f13 (diff)
downloadlinux-2353f2bea307390e015493118e425152b8a5a431.tar.bz2
HID: protect hid_debug_list
Accesses to hid_device->hid_debug_list are not serialized properly, which could result in SMP concurrency issues when HID debugfs events are accessesed by multiple userspace processess. Serialize all the list operations by a mutex. Spotted by Al Viro. Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid/hid-core.c')
-rw-r--r--drivers/hid/hid-core.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index f86dd9708ca5..e7765ede339e 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -2319,6 +2319,7 @@ struct hid_device *hid_allocate_device(void)
init_waitqueue_head(&hdev->debug_wait);
INIT_LIST_HEAD(&hdev->debug_list);
+ mutex_init(&hdev->debug_list_lock);
sema_init(&hdev->driver_lock, 1);
return hdev;