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 13:37:23 +0900 (JST)
Cc: herbert@xxxxxxxxxxxxxxxxxxx, mirko.parthey@xxxxxxxxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, netdev@xxxxxxxxxxx, shemminger@xxxxxxxx, yoshfuji@xxxxxxxxxxxxxx
In-reply-to: <20050205201044.1b95f4e8.davem@xxxxxxxxxxxxx>
Organization: USAGI Project
References: <20050204221344.247548cb.davem@xxxxxxxxxxxxx> <20050205064643.GA29758@xxxxxxxxxxxxxxxxxxx> <20050205201044.1b95f4e8.davem@xxxxxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
In article <20050205201044.1b95f4e8.davem@xxxxxxxxxxxxx> (at Sat, 5 Feb 2005 
20:10:44 -0800), "David S. Miller" <davem@xxxxxxxxxxxxx> says:

> > Alternatively we can
> > remove the dst->dev == dev check in dst_dev_event and dst_ifdown
> > and move that test down to the individual ifdown functions.
> 
> I think there is a hole in this idea.... maybe.
> 
> If the idea is to scan dst_garbage_list down in ipv6 specific code,
> you can't do that since 'dst' objects from every pool in the kernel
> get put onto the dst_garbage_list.   It is generic.

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;
}

--yoshfuji

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