Subject: Re: [BUG] RTNL and flush_scheduled_work deadlocks

From: Ben Greear <[email-masked]>
Date: Fri, 16 Feb 2007 00:23:05 -0800

Jarek Poplawski wrote:
> On Thu, Feb 15, 2007 at 11:40:32PM -0800, Ben Greear wrote:
> ...
>   
>> Maybe there should be something like an ASSERT_NOT_RTNL() in the 
>> flush_scheduled_work()
>> method?  If it's performance criticial, #ifdef it out if we're not 
>> debugging locks?
>>     
>
> Yes! I thought about the same (at first). But in my
> opinion it was not enough, so I thought about doing
> this in flush_workqueue. But in my next opinion it
> was not enough too. Now I think something like this
> should be done in rtnl_lock (under some debugging #if
> of course). 
>   
The reason these bugs have been hidden is that most of the time, there 
is nothing
on the pending work queue that will try to grab RTNL.  But, the 
flush_work_queue
is still called with RTNL held, so an assert would find this much 
earlier than
waiting for someone to get lucky and actually catch (and debug and report)
a deadlock...

I don't see how asserting it in the rtnl_lock would help anything, 
because at that
point we are about to deadlock anyway...  (and this is probably very 
rare, as mentioned above.)

Thanks,
Ben

> Cheers,
> Jarek P.
> -
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to [email-masked]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>   

-- 
Ben Greear <[email-masked]> 
Candela Technologies Inc  http://www.candelatech.com