mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 01:04:19 +08:00
59b015133c
sysfs_remove_group() waits for sysfs attributes to be removed, therefore we do not need to worry about driver-specific attributes being accessed after driver has been detached from the device. In fact, attempts to take serio->drv_mutex in attribute methods may lead to the following deadlock: sysfs_read_file() fill_read_buffer() sysfs_get_active_two() psmouse_attr_show_helper() serio_pin_driver() serio_disconnect_driver() mutex_lock(&serio->drv_mutex); <--------> mutex_lock(&serio_drv_mutex); psmouse_disconnect() sysfs_remove_group(... psmouse_attr_group); .... sysfs_deactivate(); wait_for_completion(); Fix this by removing calls to serio_[un]pin_driver() and functions themselves and using driver-private mutexes to serialize access to attribute's set() methods that may change device state. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru> |
||
---|---|---|
.. | ||
gameport | ||
joystick | ||
keyboard | ||
misc | ||
mouse | ||
serio | ||
tablet | ||
touchscreen | ||
apm-power.c | ||
evbug.c | ||
evdev.c | ||
ff-core.c | ||
ff-memless.c | ||
fixp-arith.h | ||
input-compat.c | ||
input-compat.h | ||
input-polldev.c | ||
input.c | ||
joydev.c | ||
Kconfig | ||
Makefile | ||
mousedev.c | ||
sparse-keymap.c | ||
xen-kbdfront.c |