From: Sabrina Dubroca <s...@queasysnail.net> Date: Fri, 12 Aug 2016 16:10:33 +0200
> The idea for type_check in dev_get_nest_level() was to count the number > of nested devices of the same type (currently, only macvlan or vlan > devices). > This prevented the false positive lockdep warning on configurations such > as: > > eth0 <--- macvlan0 <--- vlan0 <--- macvlan1 > > However, this doesn't prevent a warning on a configuration such as: > > eth0 <--- macvlan0 <--- vlan0 > eth1 <--- vlan1 <--- macvlan1 > > In this case, all the locks end up with a nesting subclass of 1, so > lockdep thinks that there is still a deadlock: > > - in the first case we have (macvlan_netdev_addr_lock_key, 1) and then > take (vlan_netdev_xmit_lock_key, 1) > - in the second case, we have (vlan_netdev_xmit_lock_key, 1) and then > take (macvlan_netdev_addr_lock_key, 1) > > By removing the linktype check in dev_get_nest_level() and always > incrementing the nesting depth, lockdep considers this configuration > valid. > > Signed-off-by: Sabrina Dubroca <s...@queasysnail.net> Applied.