|
@@ -1480,8 +1480,15 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
|
|
|
bond_dev->name,
|
|
|
bond_dev->type, slave_dev->type);
|
|
|
|
|
|
- netdev_bonding_change(bond_dev,
|
|
|
- NETDEV_PRE_TYPE_CHANGE);
|
|
|
+ res = netdev_bonding_change(bond_dev,
|
|
|
+ NETDEV_PRE_TYPE_CHANGE);
|
|
|
+ res = notifier_to_errno(res);
|
|
|
+ if (res) {
|
|
|
+ pr_err("%s: refused to change device type\n",
|
|
|
+ bond_dev->name);
|
|
|
+ res = -EBUSY;
|
|
|
+ goto err_undo_flags;
|
|
|
+ }
|
|
|
|
|
|
if (slave_dev->type != ARPHRD_ETHER)
|
|
|
bond_setup_by_slave(bond_dev, slave_dev);
|