From: Stephen Hemminger <shemminger@xxxxxxxx> Date: Wed, 21 Dec 2005 13:25:27 -0800 > On Wed, 21 Dec 2005 21:55:27 +0200 > mikukkon@xxxxxx 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@xxxxxx> ... > > 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.