netdev
[Top] [All Lists]

Re: PROBLEM: 2.6.11-rc2 hangs on bridge shutdown (br0)

To: davem@xxxxxxxxxxxxx
Subject: Re: PROBLEM: 2.6.11-rc2 hangs on bridge shutdown (br0)
From: YOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@xxxxxxxxxxxxxx>
Date: Sun, 06 Feb 2005 14:31:07 +0900 (JST)
Cc: herbert@xxxxxxxxxxxxxxxxxxx, mirko.parthey@xxxxxxxxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, netdev@xxxxxxxxxxx, shemminger@xxxxxxxx, yoshfuji@xxxxxxxxxxxxxx
In-reply-to: <20050205210411.7e18b8e6.davem@xxxxxxxxxxxxx>
Organization: USAGI Project
References: <20050205201044.1b95f4e8.davem@xxxxxxxxxxxxx> <20050206.133723.124822665.yoshfuji@xxxxxxxxxxxxxx> <20050205210411.7e18b8e6.davem@xxxxxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
In article <20050205210411.7e18b8e6.davem@xxxxxxxxxxxxx> (at Sat, 5 Feb 2005 
21:04:11 -0800), "David S. Miller" <davem@xxxxxxxxxxxxx> says:

> On Sun, 06 Feb 2005 13:37:23 +0900 (JST)
> YOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@xxxxxxxxxxxxxx> wrote:
> 
> > How about making dst->ops->dev_check() like this:
> > 
> > static int inline dst_dev_check(struct dst_entry *dst, struct net_device 
> > *dev)
> > {
> >     if (dst->ops->dev_check)
> >             return dst->ops->dev_check(dst, dev)
> >     else
> >             return dst->dev == dev;
> > }
> 
> Oh I see.  That would work, and it seems the simplest, and
> lowest risk fix for this problem.

Well...

Here, lo is going down.
rt->rt6i_dev = lo and rt->rt6i_idev = ethX.
I think we already see dst->dev == dev (==lo)  now.
So, I doubt that fix the problem.

The source of problem is entry (*) which still on routing entry,
not on gc list. And, the owner of entry is not routing table but
unicast/anycast address structure(s).
We need to "kill" active address on the other interfaces.

*: rt->rt6i_dev = lo and rt->rt6i_idev = ethX


BTW, I wish we could shut down eth0 during lo is pending...

--yoshfuji



<Prev in Thread] Current Thread [Next in Thread>