Re: 2.6.25rc7 lockdep trace
From: David Miller <davem@davemloft.net>
Date: 2008-06-12 08:23:29
From: Johannes Berg <johannes@sipsolutions.net> Date: Thu, 12 Jun 2008 09:20:34 +0200
quoted
If the RTNL is held when we invoke flush_scheduled_work() we could deadlock. One such case is linkwatch, it is a workqueue which triesthat ^^^^^^^^^quoted
The most common case are net driver ->stop() methods. The simplest conversion is to instead use cancel_{delayed_}work_sync() explicitly on the various workqueues the driver uses.and that ^^^^^^^^^^quoted
This is an OK transformation because these workqueues are doing thingsand that ^^^^^^^^^^ should read "work struct" because it all uses the global workqueue. I haven't looked at the drivers in more detail (sorry) but the patch itself looks fine to me (but I wouldn't have caught something like Jarek did with the now-unused variables.)
I've made those corrections to the commit message, thanks for the feedback. Since Jarek appears to be happy with the patch at this point I'll commit this and sned it to Linus in my next push of bug fixes.