mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 14:53:58 -04:00
selftests/bpf: Fix wq test.
The wq test was missing destroy(skel) part which was causing bpf progs to stay
loaded. That was causing test_progs to complain with
"Failed to unload bpf_testmod.ko from kernel: -11" message, but adding
destroy() wasn't enough, since wq callback may be delayed, so loop on unload of
bpf_testmod if errno is EAGAIN.
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Fixes: 8290dba519 ("selftests/bpf: wq: add bpf_wq_start() checks")
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
@@ -368,9 +368,23 @@ int delete_module(const char *name, int flags)
|
||||
|
||||
int unload_bpf_testmod(bool verbose)
|
||||
{
|
||||
int ret, cnt = 0;
|
||||
|
||||
if (kern_sync_rcu())
|
||||
fprintf(stdout, "Failed to trigger kernel-side RCU sync!\n");
|
||||
if (delete_module("bpf_testmod", 0)) {
|
||||
|
||||
for (;;) {
|
||||
ret = delete_module("bpf_testmod", 0);
|
||||
if (!ret || errno != EAGAIN)
|
||||
break;
|
||||
if (++cnt > 10000) {
|
||||
fprintf(stdout, "Unload of bpf_testmod timed out\n");
|
||||
break;
|
||||
}
|
||||
usleep(100);
|
||||
}
|
||||
|
||||
if (ret) {
|
||||
if (errno == ENOENT) {
|
||||
if (verbose)
|
||||
fprintf(stdout, "bpf_testmod.ko is already unloaded.\n");
|
||||
|
||||
Reference in New Issue
Block a user