-
由 Sven Eckelmann 提交于
The ff_memless has a timer running which gets run in an atomic context and calls the play_effect callback. The callback function for sony uses the hid_output_raw_report (overwritten by sixaxis_usb_output_raw_report) function to handle differences in the control message format. It is not safe for an atomic context because it may sleep later in usb_start_wait_urb. This "scheduling while atomic" can cause the system to lock up. A workaround is to make the force feedback state update using work_queues and use the play_effect function only to enqueue the work item. Reported-by: NSimon Wood <simon@mungewell.org> Reported-by: NDavid Herrmann <dh.herrmann@gmail.com> Signed-off-by: NSven Eckelmann <sven@narfation.org> Signed-off-by: NSimon Wood <simon@mungewell.org> Signed-off-by: NJiri Kosina <jkosina@suse.cz>
9f323b68