summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorNikita V. Shirokov <tehnerd@tehnerd.com>2018-04-18 06:42:21 +0200
committerDaniel Borkmann <daniel@iogearbox.net>2018-04-18 23:34:16 +0200
commit587b80cce95b8aab89e5e35033953c005dc47f01 (patch)
tree838d51861726d8fc0f9e793fd35c638ddefec288 /net
parentbpf: make virtio compatible w/ bpf_xdp_adjust_tail (diff)
downloadlinux-587b80cce95b8aab89e5e35033953c005dc47f01.tar.xz
linux-587b80cce95b8aab89e5e35033953c005dc47f01.zip
bpf: making bpf_prog_test run aware of possible data_end ptr change
after introduction of bpf_xdp_adjust_tail helper packet length could be changed not only if xdp->data pointer has been changed but xdp->data_end as well. making bpf_prog_test_run aware of this possibility Signed-off-by: Nikita V. Shirokov <tehnerd@tehnerd.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Diffstat (limited to 'net')
-rw-r--r--net/bpf/test_run.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/bpf/test_run.c b/net/bpf/test_run.c
index 2ced48662c1f..68c3578343b4 100644
--- a/net/bpf/test_run.c
+++ b/net/bpf/test_run.c
@@ -170,7 +170,8 @@ int bpf_prog_test_run_xdp(struct bpf_prog *prog, const union bpf_attr *kattr,
xdp.rxq = &rxqueue->xdp_rxq;
retval = bpf_test_run(prog, &xdp, repeat, &duration);
- if (xdp.data != data + XDP_PACKET_HEADROOM + NET_IP_ALIGN)
+ if (xdp.data != data + XDP_PACKET_HEADROOM + NET_IP_ALIGN ||
+ xdp.data_end != xdp.data + size)
size = xdp.data_end - xdp.data;
ret = bpf_test_finish(kattr, uattr, xdp.data, size, retval, duration);
kfree(data);