diff options
Diffstat (limited to 'tools/testing/selftests/bpf/testing_helpers.c')
| -rw-r--r-- | tools/testing/selftests/bpf/testing_helpers.c | 16 | 
1 files changed, 15 insertions, 1 deletions
diff --git a/tools/testing/selftests/bpf/testing_helpers.c b/tools/testing/selftests/bpf/testing_helpers.c index 28b6646662af..d5379a0e6da8 100644 --- a/tools/testing/selftests/bpf/testing_helpers.c +++ b/tools/testing/selftests/bpf/testing_helpers.c @@ -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");  | 
