On Tuesday, December 08, 2015 07:25:18 PM Viresh Kumar wrote:
On 08-12-15, 15:19, Rafael J. Wysocki wrote:
We know what should be done. We need to wait for the timer function to complete, then cancel the work item spawned by it (if any) and then cancel the timers set by that work item.
Yeah, there is no race, but it looks ugly to me. I have written it earlier, and then the spinlock thing looked better to me. :)
It doesn't look nice, but then having a lockless timer function is worth it in my view.
The code in gov_cancel_work() runs relatively rarely, but the timer function can run very often, so avoiding the lock in there is a priority to me.
Plus we can avoid disabling interrupts in two places this way.
Thanks, Rafael