[Bridge] Re: [PATCH] BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id()

David S. Miller davem at davemloft.net
Wed Dec 21 19:51:07 PST 2005


From: Stephen Hemminger <shemminger at osdl.org>
Date: Wed, 21 Dec 2005 13:25:27 -0800

> On Wed, 21 Dec 2005 21:55:27 +0200
> mikukkon at iki.fi wrote:
> 
> > I did a compile with extra gcc warnings, and found a bug in
> > net/bridge/br_stp_if.c function br_stp_recalculate_bridge_id():
> > compare_ether_addr() returns 0 if match, positive if not, so
> > checking it for negative is wrong. 
> > 
> > Signed-of-by: Mika Kukkonen <mikukkon at iki.fi>
 ...
> > diff --git a/net/bridge/br_stp_if.c b/net/bridge/br_stp_if.c
> > index ac09b6a..08c52c2 100644
> > --- a/net/bridge/br_stp_if.c
> > +++ b/net/bridge/br_stp_if.c
> > @@ -158,7 +158,7 @@ void br_stp_recalculate_bridge_id(struct
> >  
> >  	list_for_each_entry(p, &br->port_list, list) {
> >  		if (addr == br_mac_zero ||
> > -		    compare_ether_addr(p->dev->dev_addr, addr) < 0)
> > +		    compare_ether_addr(p->dev->dev_addr, addr))
> >  			addr = p->dev->dev_addr;
> >  
> >  	}
> 
> Actually that compare_ether_addr needs to be replaced by memcmp again.
> Because for bridge id calc it wants the min() of all the device addresses.

I'll hold on this patch until that is worked out.

Thanks.



More information about the Bridge mailing list