[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200816.152937.1107786737475087036.davem@davemloft.net>
Date: Sun, 16 Aug 2020 15:29:37 -0700 (PDT)
From: David Miller <davem@...emloft.net>
To: Jason@...c4.com
Cc: netdev@...r.kernel.org, bpf@...r.kernel.org, brouer@...hat.com
Subject: Re: [PATCH net] net: xdp: pull ethernet header off packet after
computing skb->protocol
From: "Jason A. Donenfeld" <Jason@...c4.com>
Date: Sat, 15 Aug 2020 09:29:30 +0200
> When an XDP program changes the ethernet header protocol field,
> eth_type_trans is used to recalculate skb->protocol. In order for
> eth_type_trans to work correctly, the ethernet header must actually be
> part of the skb data segment, so the code first pushes that onto the
> head of the skb. However, it subsequently forgets to pull it back off,
> making the behavior of the passed-on packet inconsistent between the
> protocol modifying case and the static protocol case. This patch fixes
> the issue by simply pulling the ethernet header back off of the skb
> head.
>
> Fixes: 297249569932 ("net: fix generic XDP to handle if eth header was mangled")
> Cc: Jesper Dangaard Brouer <brouer@...hat.com>
> Cc: David S. Miller <davem@...emloft.net>
> Signed-off-by: Jason A. Donenfeld <Jason@...c4.com>
Applied and queued up for -stable, thanks.
Jesper, I wonder how your original patch was tested because it pushes a packet
with skb->data pointing at the ethernet header into the stack. That should be
popped at this point as per this fix here.
Thanks.
Powered by blists - more mailing lists