On Fri, Aug 06, 2021 at 06:27:59AM -0700, Jakub Kicinski wrote: > On Fri, 6 Aug 2021 13:52:01 +0200 Pablo Neira Ayuso wrote: > > rcu_read_lock(); > > > > nf_conntrack_get_ht(&ct_hash, &hashsz); > > if (i >= hashsz) > > - i = 0; > > + break; > > Sparse says there is a missing rcu_read_unlock() here. > Please follow up on this one. Right. I can squash this fix and send another PR or send a follow up patch. Let me know your preference.
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c index 3fdcf251ec1f..d31dbccbe7bd 100644 --- a/net/netfilter/nf_conntrack_core.c +++ b/net/netfilter/nf_conntrack_core.c @@ -1377,8 +1377,10 @@ static void gc_worker(struct work_struct *work) rcu_read_lock(); nf_conntrack_get_ht(&ct_hash, &hashsz); - if (i >= hashsz) + if (i >= hashsz) { + rcu_read_unlock(); break; + } hlist_nulls_for_each_entry_rcu(h, n, &ct_hash[i], hnnode) { struct nf_conntrack_net *cnet;