From: Patrick McHardy <kaber@trash.net>
To: stable@kernel.org
Cc: "David S. Miller" <davem@davemloft.net>,
Netfilter Development Mailinglist
<netfilter-devel@vger.kernel.org>
Subject: [NETFILTER -stable]: Fix kernel panic with REDIRECT target.
Date: Wed, 28 Nov 2007 09:56:54 +0100 [thread overview]
Message-ID: <474D2D56.9090503@trash.net> (raw)
[-- Attachment #1: Type: text/plain, Size: 158 bytes --]
This patch fixes a NAT regression in 2.6.23, resulting in a
crash when a connection is NATed and matches a conntrack
helper after NAT.
Please apply, thanks.
[-- Attachment #2: 02.diff --]
[-- Type: text/x-patch, Size: 2364 bytes --]
[NETFILTER]: Fix kernel panic with REDIRECT target.
Upstream commit 1f305323ff5b9ddc1a4346d36072bcdb58f3f68a
When connection tracking entry (nf_conn) is about to copy itself it can
have some of its extension users (like nat) as being already freed and
thus not required to be copied.
Actually looking at this function I suspect it was copied from
nf_nat_setup_info() and thus bug was introduced.
Report and testing from David <david@unsolicited.net>.
[ Patrick McHardy states:
I now understand whats happening:
- new connection is allocated without helper
- connection is REDIRECTed to localhost
- nf_nat_setup_info adds NAT extension, but doesn't initialize it yet
- nf_conntrack_alter_reply performs a helper lookup based on the
new tuple, finds the SIP helper and allocates a helper extension,
causing reallocation because of too little space
- nf_nat_move_storage is called with the uninitialized nat extension
So your fix is entirely correct, thanks a lot :) ]
Signed-off-by: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
Acked-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
commit 8c02679fa33928aedf94caac69e3665eb04f4902
tree 3a54efa718001478244e26daf799298b54562480
parent 5811c2a0705a77524b2b12d927e874d2fa6520b3
author Evgeniy Polyakov <johnpol@2ka.mipt.ru> Wed, 28 Nov 2007 09:26:13 +0100
committer Patrick McHardy <kaber@trash.net> Wed, 28 Nov 2007 09:26:13 +0100
net/ipv4/netfilter/nf_nat_core.c | 5 +----
1 files changed, 1 insertions(+), 4 deletions(-)
diff --git a/net/ipv4/netfilter/nf_nat_core.c b/net/ipv4/netfilter/nf_nat_core.c
index 553ebb8..9731d2c 100644
--- a/net/ipv4/netfilter/nf_nat_core.c
+++ b/net/ipv4/netfilter/nf_nat_core.c
@@ -607,13 +607,10 @@ static void nf_nat_move_storage(struct nf_conn *conntrack, void *old)
struct nf_conn_nat *new_nat = nf_ct_ext_find(conntrack, NF_CT_EXT_NAT);
struct nf_conn_nat *old_nat = (struct nf_conn_nat *)old;
struct nf_conn *ct = old_nat->ct;
- unsigned int srchash;
- if (!(ct->status & IPS_NAT_DONE_MASK))
+ if (!ct || !(ct->status & IPS_NAT_DONE_MASK))
return;
- srchash = hash_by_src(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
-
write_lock_bh(&nf_nat_lock);
hlist_replace_rcu(&old_nat->bysource, &new_nat->bysource);
new_nat->ct = ct;
next reply other threads:[~2007-11-28 8:56 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-28 8:56 Patrick McHardy [this message]
2007-12-12 0:01 ` patch netfilter-fix-kernel-panic-with-redirect-target.patch queued to -stable tree gregkh
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=474D2D56.9090503@trash.net \
--to=kaber@trash.net \
--cc=davem@davemloft.net \
--cc=netfilter-devel@vger.kernel.org \
--cc=stable@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.