Subject: Re: [BUG, NET] deadlock tearing down a bridged interface

From: Dave Chinner <[email-masked]>
Date: Sat, 19 Jul 2008 11:17:09 +1000

On Fri, Jul 18, 2008 at 08:44:58AM -0700, Ben Greear wrote:
> Dave Chinner wrote:
>> Folks,
>>
>> I just deadlocked networking on a 2.6.24 kernel. Basically I
>> was trying to restart the bridge interface I use for UML sessions
>> because it wasn't passing packets. This happens occasionally
>> when I leave a UML session too long in gdb, so I bounced the
>> bridge to get it working again.
>>   
> We have been chasing a refcount bug in 2.6.25 that only happens when
> IPv6 module is loaded.

Which causes what problem? The deadlock I reported or the bridge occasionally
hanging? Is that a problem in 2.6.24?

The deadlock is the one I'm concerned about - it appears that
netdev_run_todo() can only wait on a single interface at a time,
so if we are tearing down two interfaces concurrently where one
has a reference on the other a deadlock is just waiting to happen...

> If you are not actually using ipv6, try removing it's
> module from your /lib/modules/* directory and see if that fixes your  
> problem.

I'll try it, but a) it's not 2.6.25 and b) I don't tend to triage problems
on my main workstation so I'm not likely to try to reproduce this
deadlock unless absolutely necessary.

Cheers,

Dave.
-- 
Dave Chinner
[email-masked]