mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 00:04:15 +08:00
selftests/bpf: Fix misaligned accesses in xdp and xdp_bpf2bpf tests
Similar to previous patch, just copy over necessary struct into local stack variable before checking its fields. Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Link: https://lore.kernel.org/bpf/20211124002325.1737739-14-andrii@kernel.org
This commit is contained in:
parent
43080b7106
commit
8f6f41f393
@ -11,8 +11,8 @@ void test_xdp(void)
|
||||
const char *file = "./test_xdp.o";
|
||||
struct bpf_object *obj;
|
||||
char buf[128];
|
||||
struct ipv6hdr *iph6 = (void *)buf + sizeof(struct ethhdr);
|
||||
struct iphdr *iph = (void *)buf + sizeof(struct ethhdr);
|
||||
struct ipv6hdr iph6;
|
||||
struct iphdr iph;
|
||||
__u32 duration, retval, size;
|
||||
int err, prog_fd, map_fd;
|
||||
|
||||
@ -28,16 +28,17 @@ void test_xdp(void)
|
||||
|
||||
err = bpf_prog_test_run(prog_fd, 1, &pkt_v4, sizeof(pkt_v4),
|
||||
buf, &size, &retval, &duration);
|
||||
|
||||
memcpy(&iph, buf + sizeof(struct ethhdr), sizeof(iph));
|
||||
CHECK(err || retval != XDP_TX || size != 74 ||
|
||||
iph->protocol != IPPROTO_IPIP, "ipv4",
|
||||
iph.protocol != IPPROTO_IPIP, "ipv4",
|
||||
"err %d errno %d retval %d size %d\n",
|
||||
err, errno, retval, size);
|
||||
|
||||
err = bpf_prog_test_run(prog_fd, 1, &pkt_v6, sizeof(pkt_v6),
|
||||
buf, &size, &retval, &duration);
|
||||
memcpy(&iph6, buf + sizeof(struct ethhdr), sizeof(iph6));
|
||||
CHECK(err || retval != XDP_TX || size != 114 ||
|
||||
iph6->nexthdr != IPPROTO_IPV6, "ipv6",
|
||||
iph6.nexthdr != IPPROTO_IPV6, "ipv6",
|
||||
"err %d errno %d retval %d size %d\n",
|
||||
err, errno, retval, size);
|
||||
out:
|
||||
|
@ -42,7 +42,7 @@ void test_xdp_bpf2bpf(void)
|
||||
char buf[128];
|
||||
int err, pkt_fd, map_fd;
|
||||
bool passed = false;
|
||||
struct iphdr *iph = (void *)buf + sizeof(struct ethhdr);
|
||||
struct iphdr iph;
|
||||
struct iptnl_info value4 = {.family = AF_INET};
|
||||
struct test_xdp *pkt_skel = NULL;
|
||||
struct test_xdp_bpf2bpf *ftrace_skel = NULL;
|
||||
@ -93,9 +93,9 @@ void test_xdp_bpf2bpf(void)
|
||||
/* Run test program */
|
||||
err = bpf_prog_test_run(pkt_fd, 1, &pkt_v4, sizeof(pkt_v4),
|
||||
buf, &size, &retval, &duration);
|
||||
|
||||
memcpy(&iph, buf + sizeof(struct ethhdr), sizeof(iph));
|
||||
if (CHECK(err || retval != XDP_TX || size != 74 ||
|
||||
iph->protocol != IPPROTO_IPIP, "ipv4",
|
||||
iph.protocol != IPPROTO_IPIP, "ipv4",
|
||||
"err %d errno %d retval %d size %d\n",
|
||||
err, errno, retval, size))
|
||||
goto out;
|
||||
|
Loading…
Reference in New Issue
Block a user