]> git.baikalelectronics.ru Git - kernel.git/commit
bonding: avoid NETDEV_CHANGEMTU event when unregistering slave
authorWANG Cong <xiyou.wangcong@gmail.com>
Thu, 6 Jul 2017 22:01:57 +0000 (15:01 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 8 Jul 2017 10:23:29 +0000 (11:23 +0100)
commitb26a1ab2f6815787d64dd57140fa13220139962c
treec8f485825b7b9ac43cdde73c4d174474b1498794
parent6c4530ef2870a4ea60764283740ea86f62fa5068
bonding: avoid NETDEV_CHANGEMTU event when unregistering slave

As Hongjun/Nicolas summarized in their original patch:

"
When a device changes from one netns to another, it's first unregistered,
then the netns reference is updated and the dev is registered in the new
netns. Thus, when a slave moves to another netns, it is first
unregistered. This triggers a NETDEV_UNREGISTER event which is caught by
the bonding driver. The driver calls bond_release(), which calls
dev_set_mtu() and thus triggers NETDEV_CHANGEMTU (the device is still in
the old netns).
"

This is a very special case, because the device is being unregistered
no one should still care about the NETDEV_CHANGEMTU event triggered
at this point, we can avoid broadcasting this event on this path,
and avoid touching inetdev_event()/addrconf_notify() path.

It requires to export __dev_set_mtu() to bonding driver.

Reported-by: Hongjun Li <hongjun.li@6wind.com>
Reported-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Cc: Jay Vosburgh <j.vosburgh@gmail.com>
Cc: Veaceslav Falico <vfalico@gmail.com>
Cc: Andy Gospodarek <andy@greyhouse.net>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bonding/bond_main.c
include/linux/netdevice.h
net/core/dev.c