aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/macvlan.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/macvlan.c')
-rw-r--r--drivers/net/macvlan.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index 7e24b5048686..b5241fc0f512 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -461,12 +461,13 @@ static int macvlan_newlink(struct net_device *dev,
461 if (lowerdev == NULL) 461 if (lowerdev == NULL)
462 return -ENODEV; 462 return -ENODEV;
463 463
464 /* Don't allow macvlans on top of other macvlans - its not really 464 /* When creating macvlans on top of other macvlans - use
465 * wrong, but lockdep can't handle it and its not useful for anything 465 * the real device as the lowerdev.
466 * you couldn't do directly on top of the real device.
467 */ 466 */
468 if (lowerdev->rtnl_link_ops == dev->rtnl_link_ops) 467 if (lowerdev->rtnl_link_ops == dev->rtnl_link_ops) {
469 return -ENODEV; 468 struct macvlan_dev *lowervlan = netdev_priv(lowerdev);
469 lowerdev = lowervlan->lowerdev;
470 }
470 471
471 if (!tb[IFLA_MTU]) 472 if (!tb[IFLA_MTU])
472 dev->mtu = lowerdev->mtu; 473 dev->mtu = lowerdev->mtu;