netfilter-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Pablo Neira Ayuso <pablo@netfilter.org>
To: netfilter-devel@vger.kernel.org
Cc: davem@davemloft.net, netdev@vger.kernel.org
Subject: [PATCH 1/6] netfilter: ctnetlink: don't add null bindings if no nat requested
Date: Fri,  9 May 2014 12:56:02 +0200	[thread overview]
Message-ID: <1399632967-4423-2-git-send-email-pablo@netfilter.org> (raw)
In-Reply-To: <1399632967-4423-1-git-send-email-pablo@netfilter.org>

From: Florian Westphal <fw@strlen.de>

commit 0eba801b64cc8284d9024c7ece30415a2b981a72 tried to fix a race
where nat initialisation can happen after ctnetlink-created conntrack
has been created.

However, it causes the nat module(s) to be loaded needlessly on
systems that are not using NAT.

Fortunately, we do not have to create null bindings in that case.

conntracks injected via ctnetlink always have the CONFIRMED bit set,
which prevents addition of the nat extension in nf_nat_ipv4/6_fn().

We only need to make sure that either no nat extension is added
or that we've created both src and dst manips.

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
---
 net/netfilter/nf_conntrack_netlink.c |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c
index ccc46fa..5857963 100644
--- a/net/netfilter/nf_conntrack_netlink.c
+++ b/net/netfilter/nf_conntrack_netlink.c
@@ -1336,6 +1336,9 @@ ctnetlink_setup_nat(struct nf_conn *ct, const struct nlattr * const cda[])
 #ifdef CONFIG_NF_NAT_NEEDED
 	int ret;
 
+	if (!cda[CTA_NAT_DST] && !cda[CTA_NAT_SRC])
+		return 0;
+
 	ret = ctnetlink_parse_nat_setup(ct, NF_NAT_MANIP_DST,
 					cda[CTA_NAT_DST]);
 	if (ret < 0)
-- 
1.7.10.4

  reply	other threads:[~2014-05-09 10:56 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-09 10:56 [PATCH 0/6] Netfilter fixes for net Pablo Neira Ayuso
2014-05-09 10:56 ` Pablo Neira Ayuso [this message]
2014-05-09 10:56 ` [PATCH 2/6] netfilter: ipv4: defrag: set local_df flag on defragmented skb Pablo Neira Ayuso
2014-05-09 10:56 ` [PATCH 3/6] netfilter: nfnetlink: Fix use after free when it fails to process batch Pablo Neira Ayuso
2014-05-09 10:56 ` [PATCH 4/6] ipv4: fix "conntrack zones" support for defrag user check in ip_expire Pablo Neira Ayuso
2014-05-09 10:56 ` [PATCH 5/6] bridge: superfluous skb->nfct check in br_nf_dev_queue_xmit Pablo Neira Ayuso
2014-05-09 10:56 ` [PATCH 6/6] netfilter: Fix potential use after free in ip6_route_me_harder() Pablo Neira Ayuso
2014-05-09 17:17 ` [PATCH 0/6] Netfilter fixes for net David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1399632967-4423-2-git-send-email-pablo@netfilter.org \
    --to=pablo@netfilter.org \
    --cc=davem@davemloft.net \
    --cc=netdev@vger.kernel.org \
    --cc=netfilter-devel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).