diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c index 672d5f803f8ff168e5b6d12bc6e51a9c72567463..1d50f801f181f4e1c4962a09d6acb81e23c7577a 100644 --- a/net/netrom/af_netrom.c +++ b/net/netrom/af_netrom.c @@ -65,6 +65,14 @@ static DEFINE_SPINLOCK(nr_list_lock); static const struct proto_ops nr_proto_ops; +/* + * NETROM network devices are virtual network devices encapsulating NETROM + * frames into AX.25 which will be sent through an AX.25 device, so form a + * special "super class" of normal net devices; split their locks off into a + * separate class since they always nest. + */ +static struct lock_class_key nr_netdev_xmit_lock_key; + /* * Socket removal during an interrupt is now safe. */ @@ -1405,6 +1413,7 @@ static int __init nr_proto_init(void) free_netdev(dev); goto fail; } + lockdep_set_class(&dev->_xmit_lock, &nr_netdev_xmit_lock_key); dev_nr[i] = dev; }