All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: John Stultz <jstultz@google.com>
Cc: Alexei Starovoitov <alexei.starovoitov@gmail.com>,
	Yafang Shao <laoar.shao@gmail.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Network Development <netdev@vger.kernel.org>,
	bpf <bpf@vger.kernel.org>,
	"linux-perf-use." <linux-perf-users@vger.kernel.org>,
	Linux-Fsdevel <linux-fsdevel@vger.kernel.org>,
	linux-mm <linux-mm@kvack.org>,
	LKML <linux-kernel@vger.kernel.org>,
	kernel test robot <oliver.sang@intel.com>,
	kbuild test robot <lkp@intel.com>,
	Andrii Nakryiko <andrii@kernel.org>,
	David Hildenbrand <david@redhat.com>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com>,
	Andrii Nakryiko <andrii.nakryiko@gmail.com>,
	Michal Miroslaw <mirq-linux@rere.qmqm.pl>,
	Peter Zijlstra <peterz@infradead.org>,
	Matthew Wilcox <willy@infradead.org>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Kees Cook <keescook@chromium.org>, Petr Mladek <pmladek@suse.com>,
	Kajetan Puchalski <kajetan.puchalski@arm.com>,
	Lukasz Luba <lukasz.luba@arm.com>,
	Qais Yousef <qyousef@google.com>,
	Daniele Di Proietto <ddiproietto@google.com>,
	Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [PATCH v2 7/7] tools/testing/selftests/bpf: replace open-coded 16 with TASK_COMM_LEN
Date: Wed, 8 Feb 2023 21:28:58 -0500	[thread overview]
Message-ID: <20230208212858.477cd05e@gandalf.local.home> (raw)
In-Reply-To: <CANDhNCo_=Q3pWc7h=ruGyHdRVGpsMKRY=C2AtZgLDwtGzRz8Kw@mail.gmail.com>

On Wed, 8 Feb 2023 16:54:03 -0800
John Stultz <jstultz@google.com> wrote:

> > Let me understand what you're saying...
> >
> > The commit 3087c61ed2c4 did
> >
> > -/* Task command name length: */
> > -#define TASK_COMM_LEN                  16
> > +/*
> > + * Define the task command name length as enum, then it can be visible to
> > + * BPF programs.
> > + */
> > +enum {
> > +       TASK_COMM_LEN = 16,
> > +};
> >
> >
> > and that caused:
> >
> > cat /sys/kernel/debug/tracing/events/task/task_newtask/format
> >
> > to print
> > field:char comm[TASK_COMM_LEN];    offset:12;    size:16;    signed:0;

Yes because there's no easy way to automatically convert an enum to a
number. And this has been a macro for a very long time (so it works,
because macros convert to numbers).

And this breaks much more than android. It will break trace-cmd, rasdaemon
and perf (if it's not using BTF). This change very much "Breaks userspace!"
And requires a kernel workaround, not a user space one.


> > instead of
> > field:char comm[16];    offset:12;    size:16;    signed:0;
> >
> > so the ftrace parsing android tracing tool had to do:
> >
> > -  if (Match(type_and_name.c_str(), R"(char [a-zA-Z_]+\[[0-9]+\])")) {
> > +  if (Match(type_and_name.c_str(),
> > +            R"(char [a-zA-Z_][a-zA-Z_0-9]*\[[a-zA-Z_0-9]+\])")) {
> >
> > to workaround this change.
> > Right?  
> 
> I believe so.
> 
> > And what are you proposing?  
> 
> I'm not proposing anything. I was just wanting to understand more
> context around this, as it outwardly appears to be a user-breaking
> change, and that is usually not done, so I figured it was an issue
> worth raising.
> 
> If the debug/tracing/*/format output is in the murky not-really-abi
> space, that's fine, but I wanted to know if this was understood as
> something that may require userland updates or if this was a
> unexpected side-effect.

Linus has already said that /sys/kernel/tracing/* is an ABI (fyi, getting
to the tracing directory via debugfs is obsolete).

Usually, when a trace event uses an enum, it can do:

TRACE_DEFINE_ENUM(TASK_COMM_LEN);

But that's a very common define. It would require it updated for every trace
event, or the change needs to be reverted.

Not sure why BTF needs it like this, because it hasn't changed in years.
Can't it just hard code it?

For ftrace to change it, it requires reading the format files at boot up
and replacing the enums with the numbers, which does impact start up.

-- Steve

  parent reply	other threads:[~2023-02-09  2:29 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-20 11:27 [PATCH v2 0/7] task comm cleanups Yafang Shao
2021-11-20 11:27 ` [PATCH v2 1/7] fs/exec: replace strlcpy with strscpy_pad in __set_task_comm Yafang Shao
2021-11-20 11:27 ` [PATCH v2 2/7] fs/exec: replace strncpy with strscpy_pad in __get_task_comm Yafang Shao
2021-11-20 11:27 ` [PATCH v2 3/7] drivers/infiniband: replace open-coded string copy with get_task_comm Yafang Shao
2021-11-20 11:27 ` [PATCH v2 4/7] fs/binfmt_elf: " Yafang Shao
2021-11-29 16:01   ` Steven Rostedt
2021-11-30  3:01     ` Yafang Shao
2021-11-30 14:22       ` Steven Rostedt
2021-11-30 15:53         ` Yafang Shao
2021-11-20 11:27 ` [PATCH v2 5/7] samples/bpf/test_overhead_kprobe_kern: replace bpf_probe_read_kernel with bpf_probe_read_kernel_str to get task comm Yafang Shao
2021-11-20 11:27 ` [PATCH v2 6/7] tools/bpf/bpftool/skeleton: " Yafang Shao
2021-11-20 11:27 ` [PATCH v2 7/7] tools/testing/selftests/bpf: replace open-coded 16 with TASK_COMM_LEN Yafang Shao
2021-11-29 10:13   ` Sven Schnelle
2021-11-29 13:41     ` Yafang Shao
2021-11-29 14:21       ` Sven Schnelle
2021-11-29 14:32         ` David Hildenbrand
2021-11-29 14:38           ` Sven Schnelle
2021-11-29 15:33             ` Yafang Shao
2021-11-29 16:07               ` Steven Rostedt
2021-11-29 16:08                 ` Steven Rostedt
2021-11-29 15:28         ` Yafang Shao
2021-11-29 17:30     ` Steven Rostedt
2021-11-29 17:56       ` Sven Schnelle
2021-11-30  3:03       ` Yafang Shao
2021-11-30 14:23         ` Steven Rostedt
2021-11-30 15:46           ` Yafang Shao
2023-02-08 21:55   ` John Stultz
2023-02-09  0:10     ` Alexei Starovoitov
2023-02-09  0:54       ` John Stultz
2023-02-09  2:06         ` Mathieu Desnoyers
2023-02-09  6:20           ` Yafang Shao
2023-02-09 14:27             ` Kajetan Puchalski
2023-02-09 15:37               ` Yafang Shao
2023-02-10 18:09                 ` Kajetan Puchalski
2023-02-11 16:51                 ` Qais Yousef
2023-02-12  3:19                   ` Yafang Shao
2023-02-09  2:28         ` Steven Rostedt [this message]
2023-02-09  2:33           ` Steven Rostedt
2023-02-11 19:00             ` Steven Rostedt
2023-02-12  3:38               ` Yafang Shao
2023-02-12  3:44                 ` Steven Rostedt
2023-02-13 17:43                   ` Namhyung Kim
2023-02-13 17:46                     ` Mathieu Desnoyers

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230208212858.477cd05e@gandalf.local.home \
    --to=rostedt@goodmis.org \
    --cc=akpm@linux-foundation.org \
    --cc=alexei.starovoitov@gmail.com \
    --cc=andrii.nakryiko@gmail.com \
    --cc=andrii@kernel.org \
    --cc=arnaldo.melo@gmail.com \
    --cc=bpf@vger.kernel.org \
    --cc=david@redhat.com \
    --cc=ddiproietto@google.com \
    --cc=jstultz@google.com \
    --cc=kajetan.puchalski@arm.com \
    --cc=keescook@chromium.org \
    --cc=laoar.shao@gmail.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=lukasz.luba@arm.com \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mirq-linux@rere.qmqm.pl \
    --cc=netdev@vger.kernel.org \
    --cc=oliver.sang@intel.com \
    --cc=peterz@infradead.org \
    --cc=pmladek@suse.com \
    --cc=qyousef@google.com \
    --cc=torvalds@linux-foundation.org \
    --cc=viro@zeniv.linux.org.uk \
    --cc=willy@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.