lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 14 Feb 2014 18:18:42 +0100 From: Veaceslav Falico <vfalico@...hat.com> To: Jiri Bohac <jiri@...a.cz> Cc: Jay Vosburgh <fubar@...ibm.com>, Andy Gospodarek <andy@...yhouse.net>, netdev@...r.kernel.org Subject: Re: [PATCH] bonding: 802.3ad: make aggregator_identifier bond-private On Fri, Feb 14, 2014 at 06:13:50PM +0100, Jiri Bohac wrote: >aggregator_identifier is used to assign unique aggregator identifiers >to aggregators of a bond during device enslaving. > >aggregator_identifier is currently a global variable that is zeroed in >bond_3ad_initialize(). > >This sequence will lead to duplicate aggregator identifiers for eth1 and eth3: > >create bond0 >change bond0 mode to 802.3ad >enslave eth0 to bond0 //eth0 gets agg id 1 >enslave eth1 to bond0 //eth1 gets agg id 2 >create bond1 >change bond1 mode to 802.3ad >enslave eth2 to bond1 //aggregator_identifier is reset to 0 > //eth2 gets agg id 1 >enslave eth3 to bond0 //eth3 gets agg id 2 > >Fix this by making aggregator_identifier private to the bond. > >Signed-off-by: Jiri Bohac <jbohac@...e.cz> Acked-by: Veaceslav Falico <vfalico@...hat.com> >--- > drivers/net/bonding/bond_3ad.c | 6 ++---- > drivers/net/bonding/bond_3ad.h | 1 + > 2 files changed, 3 insertions(+), 4 deletions(-) > >diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c >index 4ced594..dcf2ee8 100644 >--- a/drivers/net/bonding/bond_3ad.c >+++ b/drivers/net/bonding/bond_3ad.c >@@ -1806,8 +1806,6 @@ void bond_3ad_initiate_agg_selection(struct bonding *bond, int timeout) > BOND_AD_INFO(bond).agg_select_timer = timeout; > } > >-static u16 aggregator_identifier; >- > /** > * bond_3ad_initialize - initialize a bond's 802.3ad parameters and structures > * @bond: bonding struct to work on >@@ -1821,7 +1819,7 @@ void bond_3ad_initialize(struct bonding *bond, u16 tick_resolution) > if (MAC_ADDRESS_COMPARE(&(BOND_AD_INFO(bond).system.sys_mac_addr), > bond->dev->dev_addr)) { > >- aggregator_identifier = 0; >+ BOND_AD_INFO(bond).aggregator_identifier = 0; > > BOND_AD_INFO(bond).system.sys_priority = 0xFFFF; > BOND_AD_INFO(bond).system.sys_mac_addr = *((struct mac_addr *)bond->dev->dev_addr); >@@ -1892,7 +1890,7 @@ int bond_3ad_bind_slave(struct slave *slave) > ad_initialize_agg(aggregator); > > aggregator->aggregator_mac_address = *((struct mac_addr *)bond->dev->dev_addr); >- aggregator->aggregator_identifier = (++aggregator_identifier); >+ aggregator->aggregator_identifier = ++BOND_AD_INFO(bond).aggregator_identifier; > aggregator->slave = slave; > aggregator->is_active = 0; > aggregator->num_of_ports = 0; >diff --git a/drivers/net/bonding/bond_3ad.h b/drivers/net/bonding/bond_3ad.h >index 5d91ad0..1f081c8 100644 >--- a/drivers/net/bonding/bond_3ad.h >+++ b/drivers/net/bonding/bond_3ad.h >@@ -253,6 +253,7 @@ struct ad_system { > struct ad_bond_info { > struct ad_system system; /* 802.3ad system structure */ > u32 agg_select_timer; // Timer to select aggregator after all adapter's hand shakes >+ u16 aggregator_identifier; > }; > > struct ad_slave_info { > >-- >Jiri Bohac >e-mail/jabber: jiri@...a.cz -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists