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.

Reply via email to