bpf/tests: Reduce memory footprint of test suite
The test suite used to call any fill_helper callbacks to generate eBPF program data for all test cases at once. This caused ballooning memory requirements as more extensive test cases were added. Now the each fill_helper is called before the test is run and the allocated memory released afterwards, before the next test case is processed. Signed-off-by: Johan Almbladh <johan.almbladh@anyfinetworks.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Link: https://lore.kernel.org/bpf/20210914091842.4186267-3-johan.almbladh@anyfinetworks.com
This commit is contained in:
parent
c2a228d69c
commit
4bc354138d
|
@ -8694,8 +8694,6 @@ static __init int find_test_index(const char *test_name)
|
||||||
|
|
||||||
static __init int prepare_bpf_tests(void)
|
static __init int prepare_bpf_tests(void)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
|
|
||||||
if (test_id >= 0) {
|
if (test_id >= 0) {
|
||||||
/*
|
/*
|
||||||
* if a test_id was specified, use test_range to
|
* if a test_id was specified, use test_range to
|
||||||
|
@ -8739,23 +8737,11 @@ static __init int prepare_bpf_tests(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(tests); i++) {
|
|
||||||
if (tests[i].fill_helper &&
|
|
||||||
tests[i].fill_helper(&tests[i]) < 0)
|
|
||||||
return -ENOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static __init void destroy_bpf_tests(void)
|
static __init void destroy_bpf_tests(void)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(tests); i++) {
|
|
||||||
if (tests[i].fill_helper)
|
|
||||||
kfree(tests[i].u.ptr.insns);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool exclude_test(int test_id)
|
static bool exclude_test(int test_id)
|
||||||
|
@ -8960,7 +8946,19 @@ static __init int test_bpf(void)
|
||||||
|
|
||||||
pr_info("#%d %s ", i, tests[i].descr);
|
pr_info("#%d %s ", i, tests[i].descr);
|
||||||
|
|
||||||
|
if (tests[i].fill_helper &&
|
||||||
|
tests[i].fill_helper(&tests[i]) < 0) {
|
||||||
|
pr_cont("FAIL to prog_fill\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
fp = generate_filter(i, &err);
|
fp = generate_filter(i, &err);
|
||||||
|
|
||||||
|
if (tests[i].fill_helper) {
|
||||||
|
kfree(tests[i].u.ptr.insns);
|
||||||
|
tests[i].u.ptr.insns = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (fp == NULL) {
|
if (fp == NULL) {
|
||||||
if (err == 0) {
|
if (err == 0) {
|
||||||
pass_cnt++;
|
pass_cnt++;
|
||||||
|
|
Loading…
Reference in New Issue