__testapp_validate_traffic() calls exit_on_error() on failures. This exits the program immediately and can lead to memory leaks. Return TEST_FAILURE instead of calling exit_on_error(). Signed-off-by: Bastien Curutchet (eBPF Foundation) <bastien.curutchet@xxxxxxxxxxx> --- tools/testing/selftests/bpf/xskxceiver.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/bpf/xskxceiver.c b/tools/testing/selftests/bpf/xskxceiver.c index 5b1b05c21a04e05673d01855567320452db1f9c5..41c744c627d9b8acffc687f6893a01557e6556c5 100644 --- a/tools/testing/selftests/bpf/xskxceiver.c +++ b/tools/testing/selftests/bpf/xskxceiver.c @@ -1931,12 +1931,12 @@ static int __testapp_validate_traffic(struct test_spec *test, struct ifobject *i err = test_spec_set_mtu(test, test->mtu); if (err) { print_msg("Error, could not set mtu.\n"); - exit_with_error(err); + return TEST_FAILURE; } if (ifobj2) { if (pthread_barrier_init(&barr, NULL, 2)) - exit_with_error(errno); + return TEST_FAILURE; pkt_stream_reset(ifobj2->xsk->pkt_stream); } @@ -1951,7 +1951,7 @@ static int __testapp_validate_traffic(struct test_spec *test, struct ifobject *i if (ifobj2) { pthread_barrier_wait(&barr); if (pthread_barrier_destroy(&barr)) - exit_with_error(errno); + return TEST_FAILURE; /*Spawn TX thread */ pthread_create(&t1, NULL, ifobj2->func_ptr, test); -- 2.48.1