[OOPS] [PATCH] Avoid race when deregistering the IR control for dvb-usb

From: Chris Rankin
Date: Sun Dec 10 2006 - 15:00:58 EST


Hi,

Does anyone plan on fixing this oops any time soon? I first reported it back with 2.6.16.2!

http://lkml.org/lkml/2006/4/14/58

Basically, 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.

Cheers,
Chris

--- linux-2.6.16/drivers/media/dvb/dvb-usb/dvb-usb-remote.c.orig 2006-01-03
20:04:51.000000000 +0000
+++ linux-2.6.16/drivers/media/dvb/dvb-usb/dvb-usb-remote.c 2006-05-08 20:44:44.000000000
+0100
@@ -138,7 +138,7 @@
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);
}


Send instant messages to your online friends http://uk.messenger.yahoo.com
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/