Thread (6 messages) flat view 6 messages, 2 authors, 2019-01-01

Re: [PATCH v6 2/2] selftests: add tests for pidfd_send_signal()

From: "Serge E. Hallyn" <serge@hallyn.com>
Date: 2019-01-01 17:02:05
Also in: linux-fsdevel, lkml

On Tue, Jan 01, 2019 at 04:07:44PM +0100, Christian Brauner wrote:
On Mon, Dec 31, 2018 at 12:27:13AM +0100, Christian Brauner wrote:
quoted
On Sun, Dec 30, 2018 at 03:02:45PM -0600, Serge Hallyn wrote:
quoted
On Sat, Dec 29, 2018 at 11:27:56PM +0100, Christian Brauner wrote:
quoted
As suggested by Andrew Morton in [1] add selftests for the new
sys_pidfd_send_signal() syscall.
This tests whether we can send a signal to an existing process and whether
sending a signal to a process that has already exited fails with ESRCH.

[1]: https://lore.kernel.org/lkml/20181228152012.dbf0508c2508138efc5f2bbe@linux-foundation.org/ (local)

Cc: Arnd Bergmann <arnd@arndb.de>
Cc: "Eric W. Biederman" <redacted>
Cc: Kees Cook <redacted>
Cc: Serge Hallyn <serge@hallyn.com>
Acked-by: Serge Hallyn <serge@hallyn.com>

Not saying you need to do this, but it would be neat if you could test
sending to a pid which has been recycled :)
Yeah, I thought about it but it's a little weird code. First of all, we
can't set /proc/sys/kernel/pid_max to a very low value since this is a
system wide setting. So we need to recycle a lot via fork(). Something
along the lines of:
- unshare pid namespace
- fork to create pid 1 in new pid namespace
- cycle with fork() until pid > 300 since pids lower than 300 are
  reserved by the kernel.
  (That means if we simply use the first fork() after we created pid 1 we
  would never be able to recycle the pid since we skip over it. :))
- get pidfd to the pid > 300 we just created
- wait on the pid > 300
- cycle via fork() until we have reached the same pid > 300 again
- send SIGSTOP to that recycled process
- test that we cannot send SIGCONT to this SIGSTOPed task via the pidfd we
  received before
- send SIGCONT to the SIGSTOPed recycled pid and exit
Ok, I have something like this in my tree now that tests for pid
recycling. I'm going to send it out tomorrow since I reckon Andrew and
others will be off today.
But fwiw it sits in https://github.com/brauner/linux/commits/2018-12-02/procfds
Thanks, that shows off the advantages of the new syscall :)

-serge
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help