netfilter: ctnetlink: fix module auto-load in ctnetlink_parse_nat
authorPablo Neira Ayuso <pablo@netfilter.org>
Tue, 11 Sep 2012 15:46:19 +0000 (17:46 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 12 Sep 2012 15:27:37 +0000 (17:27 +0200)
(c7232c9 netfilter: add protocol independent NAT core) added
incorrect locking for the module auto-load case in ctnetlink_parse_nat.

That function is always called from ctnetlink_create_conntrack which
requires no locking.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nf_conntrack_netlink.c

index a205bd6ce294eb92b266d77bdccc2af1875ba8b8..090d267ee605c5de567f6c8d847e81bf36dc28cd 100644 (file)
@@ -1120,16 +1120,13 @@ ctnetlink_parse_nat_setup(struct nf_conn *ct,
        if (err == -EAGAIN) {
 #ifdef CONFIG_MODULES
                rcu_read_unlock();
-               spin_unlock_bh(&nf_conntrack_lock);
                nfnl_unlock();
                if (request_module("nf-nat-%u", nf_ct_l3num(ct)) < 0) {
                        nfnl_lock();
-                       spin_lock_bh(&nf_conntrack_lock);
                        rcu_read_lock();
                        return -EOPNOTSUPP;
                }
                nfnl_lock();
-               spin_lock_bh(&nf_conntrack_lock);
                rcu_read_lock();
 #else
                err = -EOPNOTSUPP;