mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-27 04:22:58 +00:00
HID: hidraw: Add spinlock in struct hidraw to protect list
It is unsafe to call list_for_each_entry in hidraw_report_event to traverse each hidraw_list node without a lock protection, the list could be modified if someone calls hidraw_release and list_del to remove itself from the list, this can cause hidraw_report_event to touch a deleted list struct and panic. To prevent this, introduce a spinlock in struct hidraw to protect list from concurrent access. Signed-off-by: Yonghua Zheng <younghua.zheng@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
committed by
Jiri Kosina
parent
06bb521911
commit
277fe44dd8
@@ -23,6 +23,7 @@ struct hidraw {
|
||||
wait_queue_head_t wait;
|
||||
struct hid_device *hid;
|
||||
struct device *dev;
|
||||
spinlock_t list_lock;
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user