Message ID | 1387281821-21342-4-git-send-email-makita.toshiaki@lab.ntt.co.jp |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
On 12/17/2013 07:03 AM, Toshiaki Makita wrote: > We have been always failed to delete the old entry at > br_fdb_change_mac_address() because br_set_mac_address() updates > dev->dev_addr before calling br_fdb_change_mac_address() and > br_fdb_change_mac_address() uses dev->dev_addr to find the old entry. > > That update of dev_addr is completely unnecessary because the same work > is done in br_stp_change_bridge_id() which is called right away after > calling br_fdb_change_mac_address(). > > Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp> Acked-by: Vlad Yasevich <vyasevic@redhat.com> -vlad > --- > net/bridge/br_device.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c > index f00cfd2..d967773 100644 > --- a/net/bridge/br_device.c > +++ b/net/bridge/br_device.c > @@ -187,8 +187,8 @@ static int br_set_mac_address(struct net_device *dev, void *p) > > spin_lock_bh(&br->lock); > if (!ether_addr_equal(dev->dev_addr, addr->sa_data)) { > - memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN); > br_fdb_change_mac_address(br, addr->sa_data); > + /* Mac address will be changed in br_stp_change_bridge_id(). */ > br_stp_change_bridge_id(br, addr->sa_data); > } > spin_unlock_bh(&br->lock); > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c index f00cfd2..d967773 100644 --- a/net/bridge/br_device.c +++ b/net/bridge/br_device.c @@ -187,8 +187,8 @@ static int br_set_mac_address(struct net_device *dev, void *p) spin_lock_bh(&br->lock); if (!ether_addr_equal(dev->dev_addr, addr->sa_data)) { - memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN); br_fdb_change_mac_address(br, addr->sa_data); + /* Mac address will be changed in br_stp_change_bridge_id(). */ br_stp_change_bridge_id(br, addr->sa_data); } spin_unlock_bh(&br->lock);
We have been always failed to delete the old entry at br_fdb_change_mac_address() because br_set_mac_address() updates dev->dev_addr before calling br_fdb_change_mac_address() and br_fdb_change_mac_address() uses dev->dev_addr to find the old entry. That update of dev_addr is completely unnecessary because the same work is done in br_stp_change_bridge_id() which is called right away after calling br_fdb_change_mac_address(). Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp> --- net/bridge/br_device.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)