From: Stefan Metzmacher <[email protected]>
To: "Eric W. Biederman" <[email protected]>,
Oleg Nesterov <[email protected]>
Cc: Linus Torvalds <[email protected]>,
Jens Axboe <[email protected]>, io-uring <[email protected]>,
Linux Kernel Mailing List <[email protected]>
Subject: Re: [PATCH 0/2] Don't show PF_IO_WORKER in /proc/<pid>/task/
Date: Thu, 25 Mar 2021 22:20:21 +0100 [thread overview]
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
Am 25.03.21 um 21:55 schrieb Eric W. Biederman:
> Oleg Nesterov <[email protected]> writes:
>
>> On 03/25, Linus Torvalds wrote:
>>>
>>> The whole "signals are very special for IO threads" thing has caused
>>> so many problems, that maybe the solution is simply to _not_ make them
>>> special?
>>
>> Or may be IO threads should not abuse CLONE_THREAD?
>>
>> Why does create_io_thread() abuse CLONE_THREAD ?
>>
>> One reason (I think) is that this implies SIGKILL when the process exits/execs,
>> anything else?
>
> A lot.
>
> The io workers perform work on behave of the ordinary userspace threads.
> Some of that work is opening files. For things like rlimits to work
> properly you need to share the signal_struct. But odds are if you find
> anything in signal_struct (not counting signals) there will be an
> io_uring code path that can exercise it as io_uring can traverse the
> filesystem, open files and read/write files. So io_uring can exercise
> all of proc.
>
> Using create_io_thread with CLONE_THREAD is the least problematic way
> (including all of the signal and ptrace problems we are looking at right
> now) to implement the io worker threads.
>
> They _really_ are threads of the process that just never execute any
> code in userspace.
So they should look like a userspace thread sitting in something like
epoll_pwait() with all signals blocked, which will never return to userspace again?
I think that would be useful, but I also think that userspace should see:
- /proc/$tidofiothread/cmdline as empty (in order to let ps and top use [iou-wrk-$tidofuserspacethread])
- /proc/$tidofiothread/exe as symlink to that not exists
- all of /proc/$tidofiothread/ shows root.root as owner and group
and things which still allow write access to /proc/$tidofiothread/comm similar things
with rw permissions should still disallow modifications:
For the other kernel threads e.g. "[cryptd]" I see the following:
LANG=C ls -l /proc/653 | grep rw
ls: cannot read symbolic link '/proc/653/exe': No such file or directory
-rw-r--r-- 1 root root 0 Mar 25 22:09 autogroup
-rw-r--r-- 1 root root 0 Mar 25 22:09 comm
-rw-r--r-- 1 root root 0 Mar 25 22:09 coredump_filter
lrwxrwxrwx 1 root root 0 Mar 25 22:09 cwd -> /
lrwxrwxrwx 1 root root 0 Mar 25 22:09 exe
-rw-r--r-- 1 root root 0 Mar 25 22:09 gid_map
-rw-r--r-- 1 root root 0 Mar 25 22:09 loginuid
-rw------- 1 root root 0 Mar 25 22:09 mem
-rw-r--r-- 1 root root 0 Mar 25 22:09 oom_adj
-rw-r--r-- 1 root root 0 Mar 25 22:09 oom_score_adj
-rw-r--r-- 1 root root 0 Mar 25 22:09 projid_map
lrwxrwxrwx 1 root root 0 Mar 25 22:09 root -> /
-rw-r--r-- 1 root root 0 Mar 25 22:09 sched
-rw-r--r-- 1 root root 0 Mar 25 22:09 setgroups
-rw-r--r-- 1 root root 0 Mar 25 22:09 timens_offsets
-rw-rw-rw- 1 root root 0 Mar 25 22:09 timerslack_ns
-rw-r--r-- 1 root root 0 Mar 25 22:09 uid_map
And this:
LANG=C echo "bla" > /proc/653/comm
-bash: echo: write error: Invalid argument
LANG=C echo "bla" > /proc/653/gid_map
-bash: echo: write error: Operation not permitted
Can't we do the same for iothreads regarding /proc?
Just make things read only there and empty "cmdline"/"exe"?
Maybe I'm too naive, but that what I'd assume as a userspace developer/admin.
Does at least parts of it make any sense?
metze
next prev parent reply other threads:[~2021-03-25 21:21 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-25 16:43 [PATCH 0/2] Don't show PF_IO_WORKER in /proc/<pid>/task/ Jens Axboe
2021-03-25 16:43 ` [PATCH 1/2] kernel: don't include PF_IO_WORKERs as part of same_thread_group() Jens Axboe
2021-03-25 16:43 ` [PATCH 2/2] proc: don't show PF_IO_WORKER threads as threads in /proc/<pid>/task/ Jens Axboe
2021-03-25 19:33 ` [PATCH 0/2] Don't show PF_IO_WORKER " Eric W. Biederman
2021-03-25 19:38 ` Linus Torvalds
2021-03-25 19:40 ` Jens Axboe
2021-03-25 19:42 ` Linus Torvalds
2021-03-25 19:46 ` Jens Axboe
2021-03-25 20:21 ` Eric W. Biederman
2021-03-25 20:40 ` Oleg Nesterov
2021-03-25 20:43 ` Jens Axboe
2021-03-25 20:48 ` Eric W. Biederman
2021-03-25 20:42 ` Jens Axboe
2021-03-25 20:12 ` Linus Torvalds
2021-03-25 20:40 ` Jens Axboe
2021-03-25 21:44 ` Jens Axboe
2021-03-25 21:57 ` Stefan Metzmacher
2021-03-26 0:11 ` Jens Axboe
2021-03-26 11:59 ` Stefan Metzmacher
2021-04-01 14:40 ` Stefan Metzmacher
2021-03-25 22:37 ` Linus Torvalds
2021-03-26 0:08 ` Jens Axboe
2021-03-25 20:43 ` Eric W. Biederman
2021-03-25 21:50 ` Jens Axboe
2021-03-25 20:44 ` Oleg Nesterov
2021-03-25 20:55 ` Eric W. Biederman
2021-03-25 21:20 ` Stefan Metzmacher [this message]
2021-03-25 21:48 ` Stefan Metzmacher
2021-03-25 19:40 ` Jens Axboe
2021-03-25 20:32 ` Oleg Nesterov
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 \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox