V4L/DVB (5178): Avoid race when deregistering the IR control for dvb-usb
The work item function is dvb_usb_read_remote_control(): INIT_WORK(&d->rc_query_work, dvb_usb_read_remote_control, d); and the last piece of work it does is: schedule_delayed_work(&d->rc_query_work,msecs_to_jiffies(d->props.rc_interval)); Hence you need to call "cancel_rearming_delayed_work()" and not "cancel_delayed_work()", correct? I certainly haven't seen this oops reoccur since I applied this patch. Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
parent
705d41e5da
commit
e1af498063
|
@ -151,7 +151,7 @@ int dvb_usb_remote_init(struct dvb_usb_device *d)
|
|||
int dvb_usb_remote_exit(struct dvb_usb_device *d)
|
||||
{
|
||||
if (d->state & DVB_USB_STATE_REMOTE) {
|
||||
cancel_delayed_work(&d->rc_query_work);
|
||||
cancel_rearming_delayed_work(&d->rc_query_work);
|
||||
flush_scheduled_work();
|
||||
input_unregister_device(d->rc_input_dev);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue