]> git.baikalelectronics.ru Git - kernel.git/commit
ipsec: Use the correct ip_local_out function
authorHerbert Xu <herbert@gondor.apana.org.au>
Tue, 20 May 2008 21:32:14 +0000 (14:32 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 20 May 2008 21:32:14 +0000 (14:32 -0700)
commit9e48f0c6e71e8971f9b5be2994dcf53e946f14a2
tree610968ecaa89b3b9144db508dc2bd650afadce74
parentcadd82be4618b355d0e6cb493a46afb80d386fc5
ipsec: Use the correct ip_local_out function

Because the IPsec output function xfrm_output_resume does its
own dst_output call it should always call __ip_local_output
instead of ip_local_output as the latter may invoke dst_output
directly.  Otherwise the return values from nf_hook and dst_output
may clash as they both use the value 1 but for different purposes.

When that clash occurs this can cause a packet to be used after
it has been freed which usually leads to a crash.  Because the
offending value is only returned from dst_output with qdiscs
such as HTB, this bug is normally not visible.

Thanks to Marco Berizzi for his perseverance in tracking this
down.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/route.c
net/ipv6/route.c