Re: [PATCH 1/1] introduce __cancel_delayed_work()

From: Roland Dreier
Date: Tue Sep 01 2009 - 12:09:44 EST

> cancel_delayed_work() has to use del_timer_sync() to guarantee the
> timer function is not running after return. But most users doesn't
> actually need this, and del_timer_sync() has problems: it is not
> useable from interrupt, and it depends on every lock which could
> be taken from irq.
> Introduce __cancel_delayed_work() which calls del_timer() instead.
> The immediate reason for this patch is
> but hopefully this helper makes sense anyway.

Thanks, Oleg!

Andrew -- how do you want to handle this? This seems to be useful for
the bug with IB that Oleg linked to, as well as by Dmitry in input, so
I'm not sure what the best way to merge all this into 2.6.32 is.

I could take Oleg's patch and the corresponding fix to
drivers/infiniband through my tree, and merge as early I as I see Linus
open 2.6.32. That leaves Dmitry to wait on it (and possibly causes
problems in -next with tree ordering) though. But I don't see any way
to get the number of cross-tree dependencies below 1... (unless maybe
Dmitry can take the identical workqueue patch into his tree and trust
git to sort it out?)

- R.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at