|
@@ -117,9 +117,13 @@ void nf_ct_l3proto_module_put(unsigned short l3proto)
|
|
{
|
|
{
|
|
struct nf_conntrack_l3proto *p;
|
|
struct nf_conntrack_l3proto *p;
|
|
|
|
|
|
- /* rcu_read_lock not necessary since the caller holds a reference */
|
|
|
|
|
|
+ /* rcu_read_lock not necessary since the caller holds a reference, but
|
|
|
|
+ * taken anyways to avoid lockdep warnings in __nf_ct_l3proto_find()
|
|
|
|
+ */
|
|
|
|
+ rcu_read_lock();
|
|
p = __nf_ct_l3proto_find(l3proto);
|
|
p = __nf_ct_l3proto_find(l3proto);
|
|
module_put(p->me);
|
|
module_put(p->me);
|
|
|
|
+ rcu_read_unlock();
|
|
}
|
|
}
|
|
EXPORT_SYMBOL_GPL(nf_ct_l3proto_module_put);
|
|
EXPORT_SYMBOL_GPL(nf_ct_l3proto_module_put);
|
|
|
|
|