• P
    netfilter: don't reset nf_trace in nf_reset() · 124dff01
    Patrick McHardy 提交于
    Commit 130549fe ("netfilter: reset nf_trace in nf_reset") added code
    to reset nf_trace in nf_reset(). This is wrong and unnecessary.
    
    nf_reset() is used in the following cases:
    
    - when passing packets up the the socket layer, at which point we want to
      release all netfilter references that might keep modules pinned while
      the packet is queued. nf_trace doesn't matter anymore at this point.
    
    - when encapsulating or decapsulating IPsec packets. We want to continue
      tracing these packets after IPsec processing.
    
    - when passing packets through virtual network devices. Only devices on
      that encapsulate in IPv4/v6 matter since otherwise nf_trace is not
      used anymore. Its not entirely clear whether those packets should
      be traced after that, however we've always done that.
    
    - when passing packets through virtual network devices that make the
      packet cross network namespace boundaries. This is the only cases
      where we clearly want to reset nf_trace and is also what the
      original patch intended to fix.
    
    Add a new function nf_reset_trace() and use it in dev_forward_skb() to
    fix this properly.
    Signed-off-by: NPatrick McHardy <kaber@trash.net>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    124dff01
dev.c 154.2 KB