-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
selftests: bpf: enable hi32 randomization for all tests
The previous libbpf patch allows user to specify "prog_flags" to bpf program load APIs. To enable high 32-bit randomization for a test, we need to set BPF_F_TEST_RND_HI32 in "prog_flags". To enable such randomization for all tests, we need to make sure all places are passing BPF_F_TEST_RND_HI32. Changing them one by one is not convenient, also, it would be better if a test could be switched to "normal" running mode without code change. Given the program load APIs used across bpf selftests are mostly: bpf_prog_load: load from file bpf_load_program: load from raw insns A test_stub.c is implemented for bpf seltests, it offers two functions for testing purpose: bpf_prog_test_load bpf_test_load_program The are the same as "bpf_prog_load" and "bpf_load_program", except they also set BPF_F_TEST_RND_HI32. Given *_xattr functions are the APIs to customize any "prog_flags", it makes little sense to put these two functions into libbpf. Then, the following CFLAGS are passed to compilations for host programs: -Dbpf_prog_load=bpf_prog_test_load -Dbpf_load_program=bpf_test_load_program They migrate the used load APIs to the test version, hence enable high 32-bit randomization for these tests without changing source code. Besides all these, there are several testcases are using "bpf_prog_load_attr" directly, their call sites are updated to pass BPF_F_TEST_RND_HI32. Signed-off-by: Jiong Wang <jiong.wang@netronome.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
- Loading branch information
Jiong Wang
authored and
Alexei Starovoitov
committed
May 25, 2019
1 parent
f3b55ab
commit 9d120b4
Showing
7 changed files
with
51 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) | ||
/* Copyright (C) 2019 Netronome Systems, Inc. */ | ||
|
||
#include <bpf/bpf.h> | ||
#include <bpf/libbpf.h> | ||
#include <string.h> | ||
|
||
int bpf_prog_test_load(const char *file, enum bpf_prog_type type, | ||
struct bpf_object **pobj, int *prog_fd) | ||
{ | ||
struct bpf_prog_load_attr attr; | ||
|
||
memset(&attr, 0, sizeof(struct bpf_prog_load_attr)); | ||
attr.file = file; | ||
attr.prog_type = type; | ||
attr.expected_attach_type = 0; | ||
attr.prog_flags = BPF_F_TEST_RND_HI32; | ||
|
||
return bpf_prog_load_xattr(&attr, pobj, prog_fd); | ||
} | ||
|
||
int bpf_test_load_program(enum bpf_prog_type type, const struct bpf_insn *insns, | ||
size_t insns_cnt, const char *license, | ||
__u32 kern_version, char *log_buf, | ||
size_t log_buf_sz) | ||
{ | ||
struct bpf_load_program_attr load_attr; | ||
|
||
memset(&load_attr, 0, sizeof(struct bpf_load_program_attr)); | ||
load_attr.prog_type = type; | ||
load_attr.expected_attach_type = 0; | ||
load_attr.name = NULL; | ||
load_attr.insns = insns; | ||
load_attr.insns_cnt = insns_cnt; | ||
load_attr.license = license; | ||
load_attr.kern_version = kern_version; | ||
load_attr.prog_flags = BPF_F_TEST_RND_HI32; | ||
|
||
return bpf_load_program_xattr(&load_attr, log_buf, log_buf_sz); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters