]> err.no Git - linux-2.6/blobdiff - drivers/net/macvlan.c
[Blackfin] arch: Add proper SW System Reset delay sequence
[linux-2.6] / drivers / net / macvlan.c
index b7c81c874f7a0a15e4bd65281aa9ceeb1e83b0cf..e8dc2f44fec960d9d3b58127699e5a4ed9eee838 100644 (file)
@@ -178,7 +178,6 @@ static const struct header_ops macvlan_hard_header_ops = {
        .create         = macvlan_hard_header,
        .rebuild        = eth_rebuild_header,
        .parse          = eth_header_parse,
-       .rebuild        = eth_rebuild_header,
        .cache          = eth_header_cache,
        .cache_update   = eth_header_cache_update,
 };
@@ -385,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)