diff --git a/[refs] b/[refs] index 2c6861fb9071..758a17928f99 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0fe1e567d0b4f6a98e94d3b9a40f41c801bd157f +refs/heads/master: a6ca5f1dbe40470fcb1ecc921769d792a1e77ed9 diff --git a/trunk/drivers/net/macvlan.c b/trunk/drivers/net/macvlan.c index 2e4bcd5654c4..e8dc2f44fec9 100644 --- a/trunk/drivers/net/macvlan.c +++ b/trunk/drivers/net/macvlan.c @@ -384,6 +384,13 @@ static int macvlan_newlink(struct net_device *dev, if (lowerdev == NULL) return -ENODEV; + /* Don't allow macvlans on top of other macvlans - its not really + * wrong, but lockdep can't handle it and its not useful for anything + * you couldn't do directly on top of the real device. + */ + if (lowerdev->rtnl_link_ops == dev->rtnl_link_ops) + return -ENODEV; + if (!tb[IFLA_MTU]) dev->mtu = lowerdev->mtu; else if (dev->mtu > lowerdev->mtu)