diff options
Diffstat (limited to 'net/netfilter')
| -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 3dddec6d2f7e..c32a7e8e3a1b 100644 --- a/net/netfilter/nf_conntrack_netlink.c +++ b/net/netfilter/nf_conntrack_netlink.c | |||
| @@ -831,13 +831,16 @@ ctnetlink_parse_nat_setup(struct nf_conn *ct, | |||
| 831 | if (!parse_nat_setup) { | 831 | if (!parse_nat_setup) { |
| 832 | #ifdef CONFIG_MODULES | 832 | #ifdef CONFIG_MODULES |
| 833 | rcu_read_unlock(); | 833 | rcu_read_unlock(); |
| 834 | spin_unlock_bh(&nf_conntrack_lock); | ||
| 834 | nfnl_unlock(); | 835 | nfnl_unlock(); |
| 835 | if (request_module("nf-nat-ipv4") < 0) { | 836 | if (request_module("nf-nat-ipv4") < 0) { |
| 836 | nfnl_lock(); | 837 | nfnl_lock(); |
| 838 | spin_lock_bh(&nf_conntrack_lock); | ||
| 837 | rcu_read_lock(); | 839 | rcu_read_lock(); |
| 838 | return -EOPNOTSUPP; | 840 | return -EOPNOTSUPP; |
| 839 | } | 841 | } |
| 840 | nfnl_lock(); | 842 | nfnl_lock(); |
| 843 | spin_lock_bh(&nf_conntrack_lock); | ||
| 841 | rcu_read_lock(); | 844 | rcu_read_lock(); |
| 842 | if (nfnetlink_parse_nat_setup_hook) | 845 | if (nfnetlink_parse_nat_setup_hook) |
| 843 | return -EAGAIN; | 846 | return -EAGAIN; |
