Message ID | 20211025083315.4752-7-laoar.shao@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | extend task comm from 16 to 24 | expand |
On Mon, Oct 25, 2021 at 08:33:09AM +0000, Yafang Shao wrote: > bpf_probe_read_kernel_str() will add a nul terminator to the dst, then > we don't care about if the dst size is big enough. This patch also > replaces the hard-coded 16 with TASK_COMM_LEN to make it adopt to task > comm size change. > > Signed-off-by: Yafang Shao <laoar.shao@gmail.com> > Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> > Cc: Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com> > Cc: Andrii Nakryiko <andrii.nakryiko@gmail.com> > Cc: Peter Zijlstra <peterz@infradead.org> > Cc: Steven Rostedt <rostedt@goodmis.org> > Cc: Al Viro <viro@zeniv.linux.org.uk> > Cc: Kees Cook <keescook@chromium.org> > Cc: Petr Mladek <pmladek@suse.com> As these are samples, I guess it's fine to change their sizes. Reviewed-by: Kees Cook <keescook@chromium.org> > --- > samples/bpf/test_overhead_kprobe_kern.c | 11 ++++++----- > samples/bpf/test_overhead_tp_kern.c | 5 +++-- > 2 files changed, 9 insertions(+), 7 deletions(-) > > diff --git a/samples/bpf/test_overhead_kprobe_kern.c b/samples/bpf/test_overhead_kprobe_kern.c > index f6d593e47037..8fdd2c9c56b2 100644 > --- a/samples/bpf/test_overhead_kprobe_kern.c > +++ b/samples/bpf/test_overhead_kprobe_kern.c > @@ -6,6 +6,7 @@ > */ > #include <linux/version.h> > #include <linux/ptrace.h> > +#include <linux/sched.h> > #include <uapi/linux/bpf.h> > #include <bpf/bpf_helpers.h> > #include <bpf/bpf_tracing.h> > @@ -22,17 +23,17 @@ int prog(struct pt_regs *ctx) > { > struct signal_struct *signal; > struct task_struct *tsk; > - char oldcomm[16] = {}; > - char newcomm[16] = {}; > + char oldcomm[TASK_COMM_LEN] = {}; > + char newcomm[TASK_COMM_LEN] = {}; > u16 oom_score_adj; > u32 pid; > > tsk = (void *)PT_REGS_PARM1(ctx); > > pid = _(tsk->pid); > - bpf_probe_read_kernel(oldcomm, sizeof(oldcomm), &tsk->comm); > - bpf_probe_read_kernel(newcomm, sizeof(newcomm), > - (void *)PT_REGS_PARM2(ctx)); > + bpf_probe_read_kernel_str(oldcomm, sizeof(oldcomm), &tsk->comm); > + bpf_probe_read_kernel_str(newcomm, sizeof(newcomm), > + (void *)PT_REGS_PARM2(ctx)); > signal = _(tsk->signal); > oom_score_adj = _(signal->oom_score_adj); > return 0; > diff --git a/samples/bpf/test_overhead_tp_kern.c b/samples/bpf/test_overhead_tp_kern.c > index eaa32693f8fc..80edadacb692 100644 > --- a/samples/bpf/test_overhead_tp_kern.c > +++ b/samples/bpf/test_overhead_tp_kern.c > @@ -4,6 +4,7 @@ > * modify it under the terms of version 2 of the GNU General Public > * License as published by the Free Software Foundation. > */ > +#include <linux/sched.h> > #include <uapi/linux/bpf.h> > #include <bpf/bpf_helpers.h> > > @@ -11,8 +12,8 @@ > struct task_rename { > __u64 pad; > __u32 pid; > - char oldcomm[16]; > - char newcomm[16]; > + char oldcomm[TASK_COMM_LEN]; > + char newcomm[TASK_COMM_LEN]; > __u16 oom_score_adj; > }; > SEC("tracepoint/task/task_rename") > -- > 2.17.1 >
diff --git a/samples/bpf/test_overhead_kprobe_kern.c b/samples/bpf/test_overhead_kprobe_kern.c index f6d593e47037..8fdd2c9c56b2 100644 --- a/samples/bpf/test_overhead_kprobe_kern.c +++ b/samples/bpf/test_overhead_kprobe_kern.c @@ -6,6 +6,7 @@ */ #include <linux/version.h> #include <linux/ptrace.h> +#include <linux/sched.h> #include <uapi/linux/bpf.h> #include <bpf/bpf_helpers.h> #include <bpf/bpf_tracing.h> @@ -22,17 +23,17 @@ int prog(struct pt_regs *ctx) { struct signal_struct *signal; struct task_struct *tsk; - char oldcomm[16] = {}; - char newcomm[16] = {}; + char oldcomm[TASK_COMM_LEN] = {}; + char newcomm[TASK_COMM_LEN] = {}; u16 oom_score_adj; u32 pid; tsk = (void *)PT_REGS_PARM1(ctx); pid = _(tsk->pid); - bpf_probe_read_kernel(oldcomm, sizeof(oldcomm), &tsk->comm); - bpf_probe_read_kernel(newcomm, sizeof(newcomm), - (void *)PT_REGS_PARM2(ctx)); + bpf_probe_read_kernel_str(oldcomm, sizeof(oldcomm), &tsk->comm); + bpf_probe_read_kernel_str(newcomm, sizeof(newcomm), + (void *)PT_REGS_PARM2(ctx)); signal = _(tsk->signal); oom_score_adj = _(signal->oom_score_adj); return 0; diff --git a/samples/bpf/test_overhead_tp_kern.c b/samples/bpf/test_overhead_tp_kern.c index eaa32693f8fc..80edadacb692 100644 --- a/samples/bpf/test_overhead_tp_kern.c +++ b/samples/bpf/test_overhead_tp_kern.c @@ -4,6 +4,7 @@ * modify it under the terms of version 2 of the GNU General Public * License as published by the Free Software Foundation. */ +#include <linux/sched.h> #include <uapi/linux/bpf.h> #include <bpf/bpf_helpers.h> @@ -11,8 +12,8 @@ struct task_rename { __u64 pad; __u32 pid; - char oldcomm[16]; - char newcomm[16]; + char oldcomm[TASK_COMM_LEN]; + char newcomm[TASK_COMM_LEN]; __u16 oom_score_adj; }; SEC("tracepoint/task/task_rename")
bpf_probe_read_kernel_str() will add a nul terminator to the dst, then we don't care about if the dst size is big enough. This patch also replaces the hard-coded 16 with TASK_COMM_LEN to make it adopt to task comm size change. Signed-off-by: Yafang Shao <laoar.shao@gmail.com> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com> Cc: Andrii Nakryiko <andrii.nakryiko@gmail.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Kees Cook <keescook@chromium.org> Cc: Petr Mladek <pmladek@suse.com> --- samples/bpf/test_overhead_kprobe_kern.c | 11 ++++++----- samples/bpf/test_overhead_tp_kern.c | 5 +++-- 2 files changed, 9 insertions(+), 7 deletions(-)