mikukkon@iki.fi
2007-Apr-18  12:34 UTC
[Bridge] [PATCH] BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id()
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@iki.fi>
---
 net/bridge/br_stp_if.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
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;
 
 	}
Stephen Hemminger
2007-Apr-18  12:34 UTC
[Bridge] Re: [PATCH] BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id()
On Wed, 21 Dec 2005 21:55:27 +0200 mikukkon@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@iki.fi> > > --- > > net/bridge/br_stp_if.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > 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. -- Stephen Hemminger <shemminger@osdl.org> OSDL http://developer.osdl.org/~shemminger