mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-08 14:13:53 +00:00
[VLAN]: nested VLAN: fix lockdep's recursive locking warning
Allow vlans nesting other vlans without lockdep's warnings (max. 2 levels i.e. parent + child). Thanks to Patrick McHardy for pointing a bug in the first version of this patch. Reported-by: Benny Amorsen Signed-off-by: Jarek Poplawski <jarkao2@gmail.com> Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
0d89d7944f
commit
0fe1e567d0
@ -323,6 +323,7 @@ static const struct header_ops vlan_header_ops = {
|
||||
static int vlan_dev_init(struct net_device *dev)
|
||||
{
|
||||
struct net_device *real_dev = VLAN_DEV_INFO(dev)->real_dev;
|
||||
int subclass = 0;
|
||||
|
||||
/* IFF_BROADCAST|IFF_MULTICAST; ??? */
|
||||
dev->flags = real_dev->flags & ~IFF_UP;
|
||||
@ -349,7 +350,11 @@ static int vlan_dev_init(struct net_device *dev)
|
||||
dev->hard_start_xmit = vlan_dev_hard_start_xmit;
|
||||
}
|
||||
|
||||
lockdep_set_class(&dev->_xmit_lock, &vlan_netdev_xmit_lock_key);
|
||||
if (real_dev->priv_flags & IFF_802_1Q_VLAN)
|
||||
subclass = 1;
|
||||
|
||||
lockdep_set_class_and_subclass(&dev->_xmit_lock,
|
||||
&vlan_netdev_xmit_lock_key, subclass);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user