Message ID | 20150415135739.GA5534@gondor.apana.org.au |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
Le 15/04/2015 15:57, Herbert Xu a écrit : > On Wed, Apr 15, 2015 at 06:22:29PM +0800, Herbert Xu wrote: [snip] > Subject: skbuff: Do not scrub skb mark within the same name space > > The commit ea23192e8e577dfc51e0f4fc5ca113af334edff9 ("tunnels: Maybe add a Fixes tag? Fixes: ea23192e8e57 ("tunnels: harmonize cleanup done on skb on rx path") > harmonize cleanup done on skb on rx path") broke anyone trying to > use netfilter marking across IPv4 tunnels. While most of the > fields that are cleared by skb_scrub_packet don't matter, the > netfilter mark must be preserved. > > This patch rearranges skb_scurb_packet to preserve the mark field. nit: s/scurb/scrub Else it's fine for me. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 3b6e583..a185427 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -4124,19 +4124,22 @@ EXPORT_SYMBOL(skb_try_coalesce); */ void skb_scrub_packet(struct sk_buff *skb, bool xnet) { - if (xnet) - skb_orphan(skb); skb->tstamp.tv64 = 0; skb->pkt_type = PACKET_HOST; skb->skb_iif = 0; skb->ignore_df = 0; skb_dst_drop(skb); - skb->mark = 0; skb_sender_cpu_clear(skb); skb_init_secmark(skb); secpath_reset(skb); nf_reset(skb); nf_reset_trace(skb); + + if (!xnet) + return; + + skb_orphan(skb); + skb->mark = 0; } EXPORT_SYMBOL_GPL(skb_scrub_packet);