Re: [PATCH] tracefs: Add tests for clearing kprobes with tracefs_dynevent_destroy_all()
Metin Kaya <[email protected]> Fri, 24 Apr 2026 09:04:10 +0100
| Newsgroups | org.kernel.vger.linux-trace-devel |
|---|---|
| Message-ID | <[email protected]> |
On 23/04/2026 9:22 pm, Steven Rostedt wrote: > From: Steven Rostedt <[email protected]> > > There was a regression with the use of tracefs_dynevent_destroy_all() where > it wasn't resetting kprobe events. Add testing of that function in the utest > for kprobe events. > > Link: https://bugzilla.kernel.org/show_bug.cgi?id=221395 > Signed-off-by: Steven Rostedt <[email protected]> > --- > utest/tracefs-utest.c | 27 +++++++++++++++++++++++++-- > 1 file changed, 25 insertions(+), 2 deletions(-) > > diff --git a/utest/tracefs-utest.c b/utest/tracefs-utest.c > index 353b3cbee199..7ec7b42eebb0 100644 > --- a/utest/tracefs-utest.c > +++ b/utest/tracefs-utest.c > @@ -2330,6 +2330,7 @@ static void test_kprobes_instance(struct tracefs_instance *instance) > /* kprobes APIs */ > destroy_dynevents(TRACEFS_DYNEVENT_KPROBE | TRACEFS_DYNEVENT_KRETPROBE); > > + /* Allocate first */ > for (i = 0; i < kprobe_count; i++) { > dkprobe[i] = tracefs_kprobe_alloc(ktests[i].system, ktests[i].event, > ktests[i].address, ktests[i].format); > @@ -2348,6 +2349,7 @@ static void test_kprobes_instance(struct tracefs_instance *instance) > get_dynevents_check(TRACEFS_DYNEVENT_KPROBE | TRACEFS_DYNEVENT_KRETPROBE, 0); > CU_TEST(check_probes(kretests, kretprobe_count, dkretprobe, false, instance, tep)); > > + /* Create the kprobes */ > for (i = 0; i < kprobe_count; i++) { > CU_TEST(tracefs_dynevent_create(dkprobe[i]) == 0); > } > @@ -2387,6 +2389,27 @@ static void test_kprobes_instance(struct tracefs_instance *instance) > tracefs_dynevent_list_free(devents); > devents = NULL; > > + /* Recreate both types, and destroy with tracefs_dynevent_destroy_all() */ > + for (i = 0; i < kretprobe_count; i++) { > + CU_TEST(tracefs_dynevent_create(dkretprobe[i]) == 0); > + } > + for (i = 0; i < kprobe_count; i++) { > + CU_TEST(tracefs_dynevent_create(dkprobe[i]) == 0); > + } > + devents = get_dynevents_check(TRACEFS_DYNEVENT_KPROBE | TRACEFS_DYNEVENT_KRETPROBE, > + kprobe_count + kretprobe_count); > + CU_TEST(check_probes(ktests, kprobe_count, devents, true, instance, tep)); > + CU_TEST(check_probes(kretests, kretprobe_count, dkretprobe, true, instance, tep)); > + tracefs_dynevent_list_free(devents); > + devents = NULL; > + > + CU_TEST(tracefs_dynevent_destroy_all(TRACEFS_DYNEVENT_ALL, true) == 0); > + > + get_dynevents_check(TRACEFS_DYNEVENT_KPROBE | TRACEFS_DYNEVENT_KRETPROBE, 0); > + CU_TEST(check_probes(ktests, kprobe_count, dkprobe, false, instance, tep)); > + CU_TEST(check_probes(kretests, kretprobe_count, dkretprobe, false, instance, tep)) > + > + /* Free the dynamic events */ > for (i = 0; i < kprobe_count; i++) > tracefs_dynevent_free(dkprobe[i]); > for (i = 0; i < kretprobe_count; i++) > @@ -3966,7 +3989,8 @@ void test_tracefs_lib(void) > fprintf(stderr, "Suite \"%s\" cannot be ceated\n", TRACEFS_SUITE); > return; > } > - > + CU_add_test(suite, "kprobes", test_kprobes); I think we can keep `kprobes` in its old location to make the patch simpler. > + return; This line should be left-over from testing I guess :) Thanks, > CU_add_test(suite, "Test tracefs/debugfs mounting", test_mounting); > CU_add_test(suite, "trace cpu read", > test_trace_cpu_read); > @@ -4032,7 +4056,6 @@ void test_tracefs_lib(void) > test_custom_trace_dir); > CU_add_test(suite, "ftrace marker", > test_ftrace_marker); > - CU_add_test(suite, "kprobes", test_kprobes); > CU_add_test(suite, "synthetic events", test_synthetic); > CU_add_test(suite, "eprobes", test_eprobes); > CU_add_test(suite, "uprobes", test_uprobes);