mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 03:10:12 +00:00
bpf: fix xdp_generic for bpf_adjust_tail usecase
When bpf_adjust_tail was introduced for generic xdp, it changed skb's tail
pointer, so it was pointing to the new "end of the packet". However skb's
len field wasn't properly modified, so on the wire ethernet frame had
original (or even bigger, if adjust_head was used) size. This diff is
fixing this.
Fixes: 198d83bb3
(" bpf: make generic xdp compatible w/ bpf_xdp_adjust_tail")
Signed-off-by: Nikita V. Shirokov <tehnerd@tehnerd.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
This commit is contained in:
parent
9b984a20ca
commit
f761312023
1 changed files with 3 additions and 1 deletions
|
@ -4057,8 +4057,10 @@ static u32 netif_receive_generic_xdp(struct sk_buff *skb,
|
|||
* pckt.
|
||||
*/
|
||||
off = orig_data_end - xdp.data_end;
|
||||
if (off != 0)
|
||||
if (off != 0) {
|
||||
skb_set_tail_pointer(skb, xdp.data_end - xdp.data);
|
||||
skb->len -= off;
|
||||
}
|
||||
|
||||
switch (act) {
|
||||
case XDP_REDIRECT:
|
||||
|
|
Loading…
Reference in a new issue