Skip to content

Commit e8e3d43

Browse files
committed
Merge: net/sched: fix false lockdep warning on qdisc root lock
MR: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/merge_requests/4133 JIRA: https://issues.redhat.com/browse/RHEL-6066 Upstream Status: all mainline in net-next.git Tested: boot-tested only Conflicts: None Signed-off-by: Davide Caratti <dcaratti@redhat.com> Approved-by: Xin Long <lxin@redhat.com> Approved-by: Florian Westphal <fwestpha@redhat.com> Approved-by: Ivan Vecera <ivecera@redhat.com> Approved-by: CKI KWF Bot <cki-ci-bot+kwf-gitlab-com@redhat.com> Conflicts: - drivers/net/vxlan/vxlan_core.c: resolved conflict between 3f27054 ('net: add netdev_lockdep_set_classes() to virtual drivers') and 3158288 ('vxlan: Fix memory leaks in error path') which came in with MR!4249. Merged-by: Scott Weaver <scweaver@redhat.com>
2 parents 173b185 + 3f27054 commit e8e3d43

File tree

16 files changed

+22
-50
lines changed

16 files changed

+22
-50
lines changed

drivers/net/dummy.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ static int dummy_dev_init(struct net_device *dev)
7171
if (!dev->lstats)
7272
return -ENOMEM;
7373

74+
netdev_lockdep_set_classes(dev);
7475
return 0;
7576
}
7677

drivers/net/geneve.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ static int geneve_init(struct net_device *dev)
341341
gro_cells_destroy(&geneve->gro_cells);
342342
return err;
343343
}
344+
netdev_lockdep_set_classes(dev);
344345
return 0;
345346
}
346347

drivers/net/loopback.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ static int loopback_dev_init(struct net_device *dev)
144144
dev->lstats = netdev_alloc_pcpu_stats(struct pcpu_lstats);
145145
if (!dev->lstats)
146146
return -ENOMEM;
147+
netdev_lockdep_set_classes(dev);
147148
return 0;
148149
}
149150

drivers/net/veth.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1452,6 +1452,7 @@ static int veth_dev_init(struct net_device *dev)
14521452
if (!dev->lstats)
14531453
return -ENOMEM;
14541454

1455+
netdev_lockdep_set_classes(dev);
14551456
err = veth_alloc_queues(dev);
14561457
if (err) {
14571458
free_percpu(dev->lstats);

drivers/net/vxlan/vxlan_core.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2962,6 +2962,7 @@ static int vxlan_init(struct net_device *dev)
29622962
if (err)
29632963
goto err_gro_cells_destroy;
29642964

2965+
netdev_lockdep_set_classes(dev);
29652966
return 0;
29662967

29672968
err_gro_cells_destroy:

include/net/sch_generic.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ struct Qdisc {
127127

128128
struct rcu_head rcu;
129129
netdevice_tracker dev_tracker;
130+
struct lock_class_key root_lock_key;
130131
/* private data */
131132
long privdata[] ____cacheline_aligned;
132133
};

net/8021q/vlan_dev.c

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -489,28 +489,6 @@ static void vlan_dev_set_rx_mode(struct net_device *vlan_dev)
489489
dev_uc_sync(vlan_dev_priv(vlan_dev)->real_dev, vlan_dev);
490490
}
491491

492-
/*
493-
* vlan network devices have devices nesting below it, and are a special
494-
* "super class" of normal network devices; split their locks off into a
495-
* separate class since they always nest.
496-
*/
497-
static struct lock_class_key vlan_netdev_xmit_lock_key;
498-
static struct lock_class_key vlan_netdev_addr_lock_key;
499-
500-
static void vlan_dev_set_lockdep_one(struct net_device *dev,
501-
struct netdev_queue *txq,
502-
void *unused)
503-
{
504-
lockdep_set_class(&txq->_xmit_lock, &vlan_netdev_xmit_lock_key);
505-
}
506-
507-
static void vlan_dev_set_lockdep_class(struct net_device *dev)
508-
{
509-
lockdep_set_class(&dev->addr_list_lock,
510-
&vlan_netdev_addr_lock_key);
511-
netdev_for_each_tx_queue(dev, vlan_dev_set_lockdep_one, NULL);
512-
}
513-
514492
static __be16 vlan_parse_protocol(const struct sk_buff *skb)
515493
{
516494
struct vlan_ethhdr *veth = (struct vlan_ethhdr *)(skb->data);
@@ -612,7 +590,7 @@ static int vlan_dev_init(struct net_device *dev)
612590

613591
SET_NETDEV_DEVTYPE(dev, &vlan_type);
614592

615-
vlan_dev_set_lockdep_class(dev);
593+
netdev_lockdep_set_classes(dev);
616594

617595
vlan->vlan_pcpu_stats = netdev_alloc_pcpu_stats(struct vlan_pcpu_stats);
618596
if (!vlan->vlan_pcpu_stats)

net/bridge/br_device.c

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -108,13 +108,6 @@ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev)
108108
return NETDEV_TX_OK;
109109
}
110110

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-
118111
static int br_dev_init(struct net_device *dev)
119112
{
120113
struct net_bridge *br = netdev_priv(dev);
@@ -153,7 +146,7 @@ static int br_dev_init(struct net_device *dev)
153146
br_fdb_hash_fini(br);
154147
}
155148

156-
br_set_lockdep_class(dev);
149+
netdev_lockdep_set_classes(dev);
157150
return err;
158151
}
159152

net/ipv4/ip_tunnel.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1280,6 +1280,7 @@ int ip_tunnel_init(struct net_device *dev)
12801280

12811281
if (tunnel->collect_md)
12821282
netif_keep_dst(dev);
1283+
netdev_lockdep_set_classes(dev);
12831284
return 0;
12841285
}
12851286
EXPORT_SYMBOL_GPL(ip_tunnel_init);

net/ipv6/ip6_gre.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1545,6 +1545,7 @@ static int ip6gre_tunnel_init_common(struct net_device *dev)
15451545
ip6gre_tnl_init_features(dev);
15461546

15471547
netdev_hold(dev, &tunnel->dev_tracker, GFP_KERNEL);
1548+
netdev_lockdep_set_classes(dev);
15481549
return 0;
15491550

15501551
cleanup_dst_cache_init:
@@ -1937,6 +1938,7 @@ static int ip6erspan_tap_init(struct net_device *dev)
19371938
ip6erspan_tnl_link_config(tunnel, 1);
19381939

19391940
netdev_hold(dev, &tunnel->dev_tracker, GFP_KERNEL);
1941+
netdev_lockdep_set_classes(dev);
19401942
return 0;
19411943

19421944
cleanup_dst_cache_init:

0 commit comments

Comments
 (0)