mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id()
@ 2005-12-21 19:55 mikukkon
  2005-12-21 21:25 ` Stephen Hemminger
  0 siblings, 1 reply; 5+ messages in thread
From: mikukkon @ 2005-12-21 19:55 UTC (permalink / raw)
  To: shemminger; +Cc: bridge, linux-kernel

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


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id()
  2005-12-21 19:55 [PATCH] BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id() mikukkon
@ 2005-12-21 21:25 ` Stephen Hemminger
  2005-12-22  3:51   ` David S. Miller
  0 siblings, 1 reply; 5+ messages in thread
From: Stephen Hemminger @ 2005-12-21 21:25 UTC (permalink / raw)
  To: mikukkon; +Cc: bridge, linux-kernel

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id()
  2005-12-21 21:25 ` Stephen Hemminger
@ 2005-12-22  3:51   ` David S. Miller
  2006-01-03 18:41     ` Stephen Hemminger
  0 siblings, 1 reply; 5+ messages in thread
From: David S. Miller @ 2005-12-22  3:51 UTC (permalink / raw)
  To: shemminger; +Cc: mikukkon, bridge, linux-kernel

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

> 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>
 ...
> > 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.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH] BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id()
  2005-12-22  3:51   ` David S. Miller
@ 2006-01-03 18:41     ` Stephen Hemminger
  2006-01-03 22:36       ` David S. Miller
  0 siblings, 1 reply; 5+ messages in thread
From: Stephen Hemminger @ 2006-01-03 18:41 UTC (permalink / raw)
  To: David S. Miller; +Cc: mikukkon, bridge, linux-kernel

One of the conversions from memcmp to compare_ether_addr is incorrect.
We need to do relative comparison to determine min MAC address to
use in bridge id. 

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>

--- linux-2.6.15.orig/net/bridge/br_stp_if.c
+++ linux-2.6.15/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)
+		    memcmp(p->dev->dev_addr, addr, ETH_ALEN) < 0)
 			addr = p->dev->dev_addr;
 
 	}

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id()
  2006-01-03 18:41     ` Stephen Hemminger
@ 2006-01-03 22:36       ` David S. Miller
  0 siblings, 0 replies; 5+ messages in thread
From: David S. Miller @ 2006-01-03 22:36 UTC (permalink / raw)
  To: shemminger; +Cc: mikukkon, bridge, linux-kernel

From: Stephen Hemminger <shemminger@osdl.org>
Date: Tue, 3 Jan 2006 10:41:57 -0800

> One of the conversions from memcmp to compare_ether_addr is incorrect.
> We need to do relative comparison to determine min MAC address to
> use in bridge id. 
> 
> Signed-off-by: Stephen Hemminger <shemminger@osdl.org>

Applied, thanks.

Is this -stable material?

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2006-01-03 22:36 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-12-21 19:55 [PATCH] BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id() mikukkon
2005-12-21 21:25 ` Stephen Hemminger
2005-12-22  3:51   ` David S. Miller
2006-01-03 18:41     ` Stephen Hemminger
2006-01-03 22:36       ` David S. Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®