mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 22:21:42 +00:00
bonding: do not set slave_dev npinfo before slave_enable_netpoll in bond_enslave
After Commit8a8efa22f5
("bonding: sync netpoll code with bridge"), it would set slave_dev npinfo in slave_enable_netpoll when enslaving a dev if bond->dev->npinfo was set. However now slave_dev npinfo is set with bond->dev->npinfo before calling slave_enable_netpoll. With slave_dev npinfo set, __netpoll_setup called in slave_enable_netpoll will not call slave dev's .ndo_netpoll_setup(). It causes that the lower dev of this slave dev can't set its npinfo. One way to reproduce it: # modprobe bonding # brctl addbr br0 # brctl addif br0 eth1 # ifconfig bond0 192.168.122.1/24 up # ifenslave bond0 eth2 # systemctl restart netconsole # ifenslave bond0 br0 # ifconfig eth2 down # systemctl restart netconsole The netpoll won't really work. This patch is to remove that slave_dev npinfo setting in bond_enslave(). Fixes:8a8efa22f5
("bonding: sync netpoll code with bridge") Signed-off-by: Xin Long <lucien.xin@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7e5a206ab6
commit
ddea788c63
@ -1660,8 +1660,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev,
|
||||
} /* switch(bond_mode) */
|
||||
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
slave_dev->npinfo = bond->dev->npinfo;
|
||||
if (slave_dev->npinfo) {
|
||||
if (bond->dev->npinfo) {
|
||||
if (slave_enable_netpoll(new_slave)) {
|
||||
netdev_info(bond_dev, "master_dev is using netpoll, but new slave device does not support netpoll\n");
|
||||
res = -EBUSY;
|
||||
|
Loading…
Reference in New Issue
Block a user