diff options
| -rw-r--r-- | net/netfilter/nf_conntrack_netlink.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c index 3d7ea7af76fc..b6977776d715 100644 --- a/net/netfilter/nf_conntrack_netlink.c +++ b/net/netfilter/nf_conntrack_netlink.c | |||
| @@ -1358,12 +1358,15 @@ ctnetlink_create_conntrack(struct net *net, u16 zone, | |||
| 1358 | nf_ct_protonum(ct)); | 1358 | nf_ct_protonum(ct)); |
| 1359 | if (helper == NULL) { | 1359 | if (helper == NULL) { |
| 1360 | rcu_read_unlock(); | 1360 | rcu_read_unlock(); |
| 1361 | spin_unlock_bh(&nf_conntrack_lock); | ||
| 1361 | #ifdef CONFIG_MODULES | 1362 | #ifdef CONFIG_MODULES |
| 1362 | if (request_module("nfct-helper-%s", helpname) < 0) { | 1363 | if (request_module("nfct-helper-%s", helpname) < 0) { |
| 1364 | spin_lock_bh(&nf_conntrack_lock); | ||
| 1363 | err = -EOPNOTSUPP; | 1365 | err = -EOPNOTSUPP; |
| 1364 | goto err1; | 1366 | goto err1; |
| 1365 | } | 1367 | } |
| 1366 | 1368 | ||
| 1369 | spin_lock_bh(&nf_conntrack_lock); | ||
| 1367 | rcu_read_lock(); | 1370 | rcu_read_lock(); |
| 1368 | helper = __nf_conntrack_helper_find(helpname, | 1371 | helper = __nf_conntrack_helper_find(helpname, |
| 1369 | nf_ct_l3num(ct), | 1372 | nf_ct_l3num(ct), |
