Re: [PATCH v2] tracefs: Add tests for clearing kprobes with tracefs_dynevent_destroy_all()

Metin Kaya <[email protected]> Mon, 27 Apr 2026 09:33:44 +0100
Newsgroups org.kernel.vger.linux-trace-devel
Message-ID <[email protected]>
On 24/04/2026 7:48 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]>
> ---
> Changes since v1: https://lore.kernel.org/[email protected]
> 
> - Remove leftover debugging (had kprobe test first followed by a return).
>     (Metin Kaya)
> 
>   utest/tracefs-utest.c | 23 +++++++++++++++++++++++
>   1 file changed, 23 insertions(+)
> 
> diff --git a/utest/tracefs-utest.c b/utest/tracefs-utest.c
> index 97a91dfcdb2c..e3ff2151796b 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++)

`utest/trace-utest` output looks good to me:

```
Suite: tracefs library
   Test: Test tracefs/debugfs mounting ...passed
   Test: trace cpu read ...passed
   ...
   Test: Follow events clear ...passed
   Test: tracefs_tracers API ...passed
   Test: tracefs_local events API ...passed
   Test: tracefs_instances_walk API ...passed
   Test: tracefs_get_clock API ...passed
   Test: tracing on / off ...passed
   Test: tracing options ...passed
   Test: custom system directory ...passed
   Test: ftrace marker ...passed
   Test: kprobes ...passed
   Test: synthetic events ...passed
   Test: eprobes ...passed
   Test: uprobes ...passed
   Test: multi probe test ...passed

Run Summary:    Type    Total      Ran   Passed Failed Inactive
               suites        1        1      n/a      0        0
                tests       37       37       37      0        0
              asserts 29270699 29270699 29270699      0      n/a

Elapsed time =  158.795 seconds
```

Tested-by: Metin Kaya <[email protected]>

Thanks,