• Herbert Xu's avatar
    ipsec: Use the correct ip_local_out function · 1ac06e03
    Herbert Xu authored
    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: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    1ac06e03
route.c 76 KB