diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-03-20 06:27:18 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-03-20 06:27:18 -0400 |
commit | 4958134df54c2c84e9c22ea042761d439164d26e (patch) | |
tree | 503177afab11f7d25b12a84ce25b481d305c51ba /net/core/dev.c | |
parent | c4f528795d1add8b63652673f7262729f679c6c1 (diff) | |
parent | c698ca5278934c0ae32297a8725ced2e27585d7f (diff) |
Merge 4.16-rc6 into tty-next
We want the serial/tty fixes in here as well.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net/core/dev.c')
-rw-r--r-- | net/core/dev.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index d4362befe7e2..2cedf520cb28 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -6396,6 +6396,7 @@ static int __netdev_upper_dev_link(struct net_device *dev, | |||
6396 | .linking = true, | 6396 | .linking = true, |
6397 | .upper_info = upper_info, | 6397 | .upper_info = upper_info, |
6398 | }; | 6398 | }; |
6399 | struct net_device *master_dev; | ||
6399 | int ret = 0; | 6400 | int ret = 0; |
6400 | 6401 | ||
6401 | ASSERT_RTNL(); | 6402 | ASSERT_RTNL(); |
@@ -6407,11 +6408,14 @@ static int __netdev_upper_dev_link(struct net_device *dev, | |||
6407 | if (netdev_has_upper_dev(upper_dev, dev)) | 6408 | if (netdev_has_upper_dev(upper_dev, dev)) |
6408 | return -EBUSY; | 6409 | return -EBUSY; |
6409 | 6410 | ||
6410 | if (netdev_has_upper_dev(dev, upper_dev)) | 6411 | if (!master) { |
6411 | return -EEXIST; | 6412 | if (netdev_has_upper_dev(dev, upper_dev)) |
6412 | 6413 | return -EEXIST; | |
6413 | if (master && netdev_master_upper_dev_get(dev)) | 6414 | } else { |
6414 | return -EBUSY; | 6415 | master_dev = netdev_master_upper_dev_get(dev); |
6416 | if (master_dev) | ||
6417 | return master_dev == upper_dev ? -EEXIST : -EBUSY; | ||
6418 | } | ||
6415 | 6419 | ||
6416 | ret = call_netdevice_notifiers_info(NETDEV_PRECHANGEUPPER, | 6420 | ret = call_netdevice_notifiers_info(NETDEV_PRECHANGEUPPER, |
6417 | &changeupper_info.info); | 6421 | &changeupper_info.info); |