All of lore.kernel.org
 help / color / mirror / Atom feed
From: Petr Mladek <pmladek@suse.com>
To: Yafang Shao <laoar.shao@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Kees Cook <keescook@chromium.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Valentin Schneider <valentin.schneider@arm.com>,
	Qiang Zhang <qiang.zhang@windriver.com>,
	robdclark <robdclark@chromium.org>,
	christian <christian@brauner.io>,
	Dietmar Eggemann <dietmar.eggemann@arm.com>,
	Ingo Molnar <mingo@redhat.com>,
	Juri Lelli <juri.lelli@redhat.com>,
	Vincent Guittot <vincent.guittot@linaro.org>,
	David Miller <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>,
	Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Andrii Nakryiko <andrii@kernel.org>, Martin Lau <kafai@fb.com>,
	Song Liu <songliubraving@fb.com>, Yonghong Song <yhs@fb.com>,
	john fastabend <john.fastabend@gmail.com>,
	KP Singh <kpsingh@kernel.org>,
	dennis.dalessandro@cornelisnetworks.com,
	mike.marciniszyn@cornelisnetworks.com, dledford@redhat.com,
	jgg@ziepe.ca, linux-rdma@vger.kernel.org,
	netdev <netdev@vger.kernel.org>, bpf <bpf@vger.kernel.org>,
	"linux-perf-use." <linux-perf-users@vger.kernel.org>,
	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>
Subject: Re: [PATCH v7 00/11] extend task comm from 16 to 24
Date: Mon, 1 Nov 2021 17:02:12 +0100	[thread overview]
Message-ID: <YYAPhE9uX7OYTlpv@alley> (raw)
In-Reply-To: <CALOAHbA61RyGVzG8SVcNG=0rdqnUCt4AxCKmtuxRnbS_SH=+MQ@mail.gmail.com>

On Mon 2021-11-01 22:34:30, Yafang Shao wrote:
> On Mon, Nov 1, 2021 at 10:07 PM Petr Mladek <pmladek@suse.com> wrote:
> > On Mon 2021-11-01 06:04:08, Yafang Shao wrote:
> > > 4. Print a warning if the kthread comm is still truncated.
> > >
> > > 5. What will happen to the out-of-tree tools after this change?
> > >    If the tool get task comm through kernel API, for example prctl(2),
> > >    bpf_get_current_comm() and etc, then it doesn't matter how large the
> > >    user buffer is, because it will always get a string with a nul
> > >    terminator. While if it gets the task comm through direct string copy,
> > >    the user tool must make sure the copied string has a nul terminator
> > >    itself. As TASK_COMM_LEN is not exposed to userspace, there's no
> > >    reason that it must require a fixed-size task comm.
> >
> > The amount of code that has to be updated is really high. I am pretty
> > sure that there are more potential buffer overflows left.
> >
> > You did not commented on the concerns in the thread
> > https://lore.kernel.org/all/CAADnVQKm0Ljj-w5PbkAu1ugLFnZRRPt-Vk-J7AhXxDD5xVompA@mail.gmail.com/
> >
> I thought Steven[1] and  Kees[2] have already clearly explained why we
> do it like that, so I didn't give any more words on it.
> 
> [1]. https://lore.kernel.org/all/20211025170503.59830a43@gandalf.local.home/

Steven was against switching task->comm[16] into a dynamically
allocated pointer. But he was not against storing longer names
separately.

> [2]. https://lore.kernel.org/all/202110251406.56F87A3522@keescook/

Honestly, I am a bit confused by Kees' answer. IMHO, he agreed that
switching task->comm[16] into a pointer was not worth it.

But I am not sure what he meant by "Agreed -- this is a small change
for what is already an "uncommon" corner case."


> > Several people suggested to use a more conservative approach.
> 
> Yes, they are Al[3] and Alexei[4].
> 
> [3]. https://lore.kernel.org/lkml/YVkmaSUxbg%2FJtBHb@zeniv-ca.linux.org.uk/

IMHO, Al suggested to store the long name separately and return it
by proc_task_name() when available.


> [4]. https://lore.kernel.org/all/CAADnVQKm0Ljj-w5PbkAu1ugLFnZRRPt-Vk-J7AhXxDD5xVompA@mail.gmail.com/

Alexei used dentry->d_iname as an exaxmple. struct dentry uses
d_iname[DNAME_INLINE_LEN] for short names. And dynamically
allocated d_name for long names, see *__d_alloc() implementation.

> > I mean
> > to keep comm[16] as is and add a new pointer to the full name. The buffer
> > for the long name might be dynamically allocated only when needed.
> >
> 
> That would add a new allocation in the fork() for the threads with a long name.
> I'm not sure if it is worth it.

The allocation will be done only when needed. IMHO, the performance is
important only for userspace processes. I am not aware of any kernel
subsystem that would heavily create and destroy kthreads.


> > The pointer might be either in task_struct or struct kthread. It might
> > be used the same way as the full name stored by workqueue kthreads.
> >
> 
> If we decide to do it like that, I think we'd better add it in
> task_struct, then it will work for all tasks.

Is it really needed for userspace processes? For example, ps shows
the information from /proc/*/cmdline instead.


> > The advantage of the separate pointer:
> >
> >    + would work for names longer than 32
> >    + will not open security holes in code
> >
> 
> Yes, those are the advantages.  And the disadvantage of it is:
> 
>  - new allocation in fork()

It should not be a problem if we do it only when necessary and only
for kthreads.

Best Regards,
Petr

  reply	other threads:[~2021-11-01 16:02 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-01  6:04 [PATCH v7 00/11] extend task comm from 16 to 24 Yafang Shao
2021-11-01  6:04 ` [PATCH v7 01/11] fs/exec: make __set_task_comm always set a nul terminated string Yafang Shao
2021-11-01  6:04 ` [PATCH v7 02/11] fs/exec: make __get_task_comm always get " Yafang Shao
2021-11-01  6:04 ` [PATCH v7 03/11] sched.h: use __must_be_array instead of BUILD_BUG_ON in get_task_comm Yafang Shao
2021-11-01  6:04 ` [PATCH v7 04/11] drivers/infiniband: make setup_ctxt always get a nul terminated task comm Yafang Shao
2021-11-01  6:04 ` [PATCH v7 05/11] fs/binfmt_elf: make prpsinfo " Yafang Shao
2021-11-01  6:04 ` [PATCH v7 06/11] samples/bpf/test_overhead_kprobe_kern: make it adopt to task comm size change Yafang Shao
2021-11-01  6:04 ` [PATCH v7 07/11] tools/bpf/bpftool/skeleton: " Yafang Shao
2021-11-01 23:47   ` Andrii Nakryiko
2021-11-01  6:04 ` [PATCH v7 08/11] tools/perf/test: make perf test " Yafang Shao
2021-11-17 14:31   ` Arnaldo Carvalho de Melo
2021-11-18 14:18     ` Yafang Shao
2021-11-01  6:04 ` [PATCH v7 09/11] tools/testing/selftests/bpf: make it " Yafang Shao
2021-11-01 23:47   ` Andrii Nakryiko
2021-11-01  6:04 ` [PATCH v7 10/11] sched.h: extend task comm from 16 to 24 Yafang Shao
2021-11-01  6:04 ` [PATCH v7 11/11] kernel/kthread: show a warning if kthread's comm is truncated Yafang Shao
2021-11-01 12:44 ` [PATCH v7 00/11] extend task comm from 16 to 24 Matthew Wilcox
2021-11-01 13:12   ` Yafang Shao
2021-11-01 14:07 ` Petr Mladek
2021-11-01 14:34   ` Yafang Shao
2021-11-01 16:02     ` Petr Mladek [this message]
2021-11-01 16:06       ` Steven Rostedt
2021-11-02  1:09       ` Yafang Shao
2021-11-02  1:18         ` Steven Rostedt
2021-11-02  1:26           ` Yafang Shao
2021-11-02  7:56             ` Petr Mladek
2021-11-02 13:48               ` Yafang Shao
2021-11-02  9:26           ` David Hildenbrand
2021-11-04  1:37 ` Michał Mirosław
2021-11-05  6:34   ` Yafang Shao
2021-11-05 23:57     ` Michał Mirosław
2021-11-06  9:12       ` Yafang Shao
2021-11-06 11:29         ` Michał Mirosław

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=YYAPhE9uX7OYTlpv@alley \
    --to=pmladek@suse.com \
    --cc=akpm@linux-foundation.org \
    --cc=andrii@kernel.org \
    --cc=arnaldo.melo@gmail.com \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=christian@brauner.io \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=dennis.dalessandro@cornelisnetworks.com \
    --cc=dietmar.eggemann@arm.com \
    --cc=dledford@redhat.com \
    --cc=jgg@ziepe.ca \
    --cc=john.fastabend@gmail.com \
    --cc=juri.lelli@redhat.com \
    --cc=kafai@fb.com \
    --cc=keescook@chromium.org \
    --cc=kpsingh@kernel.org \
    --cc=kuba@kernel.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=linux-rdma@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mike.marciniszyn@cornelisnetworks.com \
    --cc=mingo@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=oliver.sang@intel.com \
    --cc=peterz@infradead.org \
    --cc=qiang.zhang@windriver.com \
    --cc=robdclark@chromium.org \
    --cc=rostedt@goodmis.org \
    --cc=songliubraving@fb.com \
    --cc=valentin.schneider@arm.com \
    --cc=vincent.guittot@linaro.org \
    --cc=viro@zeniv.linux.org.uk \
    --cc=yhs@fb.com \
    /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.