[NETFILTER]: Fix kernel panic with REDIRECT target.
authorEvgeniy Polyakov <johnpol@2ka.mipt.ru>
Tue, 20 Nov 2007 12:27:35 +0000 (04:27 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 20 Nov 2007 12:27:35 +0000 (04:27 -0800)
commit1f305323ff5b9ddc1a4346d36072bcdb58f3f68a
treeaa4497ece78e8fe53113d6d39bca8a2159d88c7d
parent0a06ea87185531705e4417e3a051f81b64f210c1
[NETFILTER]: Fix kernel panic with REDIRECT target.

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>
net/ipv4/netfilter/nf_nat_core.c