Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'net-adopt-netdev_lockdep_set_classes'

Eric Dumazet says:

====================
net: adopt netdev_lockdep_set_classes()

Instead of waiting for syzbot to discover lockdep false positives,
make sure we use netdev_lockdep_set_classes() a bit more.
====================

Link: https://lore.kernel.org/r/20240212140700.2795436-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

+13 -31
+1
drivers/net/dummy.c
··· 71 71 if (!dev->lstats) 72 72 return -ENOMEM; 73 73 74 + netdev_lockdep_set_classes(dev); 74 75 return 0; 75 76 } 76 77
+1
drivers/net/geneve.c
··· 335 335 gro_cells_destroy(&geneve->gro_cells); 336 336 return err; 337 337 } 338 + netdev_lockdep_set_classes(dev); 338 339 return 0; 339 340 } 340 341
+1
drivers/net/loopback.c
··· 144 144 dev->lstats = netdev_alloc_pcpu_stats(struct pcpu_lstats); 145 145 if (!dev->lstats) 146 146 return -ENOMEM; 147 + netdev_lockdep_set_classes(dev); 147 148 return 0; 148 149 } 149 150
+1
drivers/net/veth.c
··· 1499 1499 1500 1500 static int veth_dev_init(struct net_device *dev) 1501 1501 { 1502 + netdev_lockdep_set_classes(dev); 1502 1503 return veth_alloc_queues(dev); 1503 1504 } 1504 1505
+1
drivers/net/vxlan/vxlan_core.c
··· 2855 2855 if (err) 2856 2856 goto err_gro_cells_destroy; 2857 2857 2858 + netdev_lockdep_set_classes(dev); 2858 2859 return 0; 2859 2860 2860 2861 err_gro_cells_destroy:
+1 -23
net/8021q/vlan_dev.c
··· 504 504 dev_uc_sync(vlan_dev_priv(vlan_dev)->real_dev, vlan_dev); 505 505 } 506 506 507 - /* 508 - * vlan network devices have devices nesting below it, and are a special 509 - * "super class" of normal network devices; split their locks off into a 510 - * separate class since they always nest. 511 - */ 512 - static struct lock_class_key vlan_netdev_xmit_lock_key; 513 - static struct lock_class_key vlan_netdev_addr_lock_key; 514 - 515 - static void vlan_dev_set_lockdep_one(struct net_device *dev, 516 - struct netdev_queue *txq, 517 - void *unused) 518 - { 519 - lockdep_set_class(&txq->_xmit_lock, &vlan_netdev_xmit_lock_key); 520 - } 521 - 522 - static void vlan_dev_set_lockdep_class(struct net_device *dev) 523 - { 524 - lockdep_set_class(&dev->addr_list_lock, 525 - &vlan_netdev_addr_lock_key); 526 - netdev_for_each_tx_queue(dev, vlan_dev_set_lockdep_one, NULL); 527 - } 528 - 529 507 static __be16 vlan_parse_protocol(const struct sk_buff *skb) 530 508 { 531 509 struct vlan_ethhdr *veth = (struct vlan_ethhdr *)(skb->data); ··· 605 627 606 628 SET_NETDEV_DEVTYPE(dev, &vlan_type); 607 629 608 - vlan_dev_set_lockdep_class(dev); 630 + netdev_lockdep_set_classes(dev); 609 631 610 632 vlan->vlan_pcpu_stats = netdev_alloc_pcpu_stats(struct vlan_pcpu_stats); 611 633 if (!vlan->vlan_pcpu_stats)
+1 -8
net/bridge/br_device.c
··· 108 108 return NETDEV_TX_OK; 109 109 } 110 110 111 - static struct lock_class_key bridge_netdev_addr_lock_key; 112 - 113 - static void br_set_lockdep_class(struct net_device *dev) 114 - { 115 - lockdep_set_class(&dev->addr_list_lock, &bridge_netdev_addr_lock_key); 116 - } 117 - 118 111 static int br_dev_init(struct net_device *dev) 119 112 { 120 113 struct net_bridge *br = netdev_priv(dev); ··· 146 153 br_fdb_hash_fini(br); 147 154 } 148 155 149 - br_set_lockdep_class(dev); 156 + netdev_lockdep_set_classes(dev); 150 157 return err; 151 158 } 152 159
+1
net/ipv4/ip_tunnel.c
··· 1269 1269 1270 1270 if (tunnel->collect_md) 1271 1271 netif_keep_dst(dev); 1272 + netdev_lockdep_set_classes(dev); 1272 1273 return 0; 1273 1274 } 1274 1275 EXPORT_SYMBOL_GPL(ip_tunnel_init);
+2
net/ipv6/ip6_gre.c
··· 1511 1511 ip6gre_tnl_init_features(dev); 1512 1512 1513 1513 netdev_hold(dev, &tunnel->dev_tracker, GFP_KERNEL); 1514 + netdev_lockdep_set_classes(dev); 1514 1515 return 0; 1515 1516 1516 1517 cleanup_dst_cache_init: ··· 1902 1901 ip6erspan_tnl_link_config(tunnel, 1); 1903 1902 1904 1903 netdev_hold(dev, &tunnel->dev_tracker, GFP_KERNEL); 1904 + netdev_lockdep_set_classes(dev); 1905 1905 return 0; 1906 1906 1907 1907 cleanup_dst_cache_init:
+1
net/ipv6/ip6_tunnel.c
··· 1898 1898 dev->max_mtu = IP6_MAX_MTU - dev->hard_header_len; 1899 1899 1900 1900 netdev_hold(dev, &t->dev_tracker, GFP_KERNEL); 1901 + netdev_lockdep_set_classes(dev); 1901 1902 return 0; 1902 1903 1903 1904 destroy_dst:
+1
net/ipv6/ip6_vti.c
··· 935 935 if (!dev->tstats) 936 936 return -ENOMEM; 937 937 netdev_hold(dev, &t->dev_tracker, GFP_KERNEL); 938 + netdev_lockdep_set_classes(dev); 938 939 return 0; 939 940 } 940 941
+1
net/ipv6/sit.c
··· 1460 1460 return err; 1461 1461 } 1462 1462 netdev_hold(dev, &tunnel->dev_tracker, GFP_KERNEL); 1463 + netdev_lockdep_set_classes(dev); 1463 1464 return 0; 1464 1465 } 1465 1466