2022-09-18 12:41:34

by Tao Chen

[permalink] [raw]
Subject: [PATCH] tracing/eprobe: Fix alloc event dir failed when event name no set

The event dir will alloc failed when event name no set, using the
command:
"echo "e:esys/ syscalls/sys_enter_openat file=\$filename:string"
>> dynamic_events"
It seems that dir name="syscalls/sys_enter_openat" is not allowed
in debugfs. So just use the "sys_enter_openat" as the event name.

Fixes: 7491e2c44278 ("tracing: Add a probe that attaches to trace
events")
Signed-off-by: Tao Chen <[email protected]>
---
kernel/trace/trace_eprobe.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/kernel/trace/trace_eprobe.c b/kernel/trace/trace_eprobe.c
index 1783e3478912..a8938e54cd34 100644
--- a/kernel/trace/trace_eprobe.c
+++ b/kernel/trace/trace_eprobe.c
@@ -968,8 +968,7 @@ static int __trace_eprobe_create(int argc, const char *argv[])
}

if (!event) {
- strscpy(buf1, argv[1], MAX_EVENT_NAME_LEN);
- sanitize_event_name(buf1);
+ strscpy(buf1, sys_event, MAX_EVENT_NAME_LEN);
event = buf1;
}

--
2.32.0


2022-09-23 05:52:43

by Masami Hiramatsu

[permalink] [raw]
Subject: Re: [PATCH] tracing/eprobe: Fix alloc event dir failed when event name no set

On Sun, 18 Sep 2022 20:29:08 +0800
Tao Chen <[email protected]> wrote:

> The event dir will alloc failed when event name no set, using the
> command:
> "echo "e:esys/ syscalls/sys_enter_openat file=\$filename:string"
> >> dynamic_events"
> It seems that dir name="syscalls/sys_enter_openat" is not allowed
> in debugfs. So just use the "sys_enter_openat" as the event name.

Good catch!

>
> Fixes: 7491e2c44278 ("tracing: Add a probe that attaches to trace
> events")

But actually, this code was introduced by below commit, so Fixes tag
must be updated. (this is important because stable backport version
will be decided by this tag.)

Fixes: 95c104c378dc ("tracing: Auto generate event name when creating a group of events")

Acked-by: Masami Hiramatsu (Google) <[email protected]>

Thank you!

> Signed-off-by: Tao Chen <[email protected]>
> ---
> kernel/trace/trace_eprobe.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/kernel/trace/trace_eprobe.c b/kernel/trace/trace_eprobe.c
> index 1783e3478912..a8938e54cd34 100644
> --- a/kernel/trace/trace_eprobe.c
> +++ b/kernel/trace/trace_eprobe.c
> @@ -968,8 +968,7 @@ static int __trace_eprobe_create(int argc, const char *argv[])
> }
>
> if (!event) {
> - strscpy(buf1, argv[1], MAX_EVENT_NAME_LEN);
> - sanitize_event_name(buf1);
> + strscpy(buf1, sys_event, MAX_EVENT_NAME_LEN);
> event = buf1;
> }
>
> --
> 2.32.0
>


--
Masami Hiramatsu (Google) <[email protected]>

2022-09-24 13:58:24

by Tao Chen

[permalink] [raw]
Subject: Re: [PATCH] tracing/eprobe: Fix alloc event dir failed when event name no set

在 2022/9/23 下午1:29, Masami Hiramatsu (Google) 写道:
> On Sun, 18 Sep 2022 20:29:08 +0800
> Tao Chen <[email protected]> wrote:
>
>> The event dir will alloc failed when event name no set, using the
>> command:
>> "echo "e:esys/ syscalls/sys_enter_openat file=\$filename:string"
>>>> dynamic_events"
>> It seems that dir name="syscalls/sys_enter_openat" is not allowed
>> in debugfs. So just use the "sys_enter_openat" as the event name.
>
> Good catch!
>
>>
>> Fixes: 7491e2c44278 ("tracing: Add a probe that attaches to trace
>> events")
>
> But actually, this code was introduced by below commit, so Fixes tag
> must be updated. (this is important because stable backport version
> will be decided by this tag.)
>
> Fixes: 95c104c378dc ("tracing: Auto generate event name when creating a group of events")
>
> Acked-by: Masami Hiramatsu (Google) <[email protected]>
>
> Thank you!
>
>> Signed-off-by: Tao Chen <[email protected]>
>> ---
>> kernel/trace/trace_eprobe.c | 3 +--
>> 1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/kernel/trace/trace_eprobe.c b/kernel/trace/trace_eprobe.c
>> index 1783e3478912..a8938e54cd34 100644
>> --- a/kernel/trace/trace_eprobe.c
>> +++ b/kernel/trace/trace_eprobe.c
>> @@ -968,8 +968,7 @@ static int __trace_eprobe_create(int argc, const char *argv[])
>> }
>>
>> if (!event) {
>> - strscpy(buf1, argv[1], MAX_EVENT_NAME_LEN);
>> - sanitize_event_name(buf1);
>> + strscpy(buf1, sys_event, MAX_EVENT_NAME_LEN);
>> event = buf1;
>> }
>>
>> --
>> 2.32.0
>>
>
>
Thank you for your review, i will change it in v2.