lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20190724144651.28272-1-christian@brauner.io>
Date:   Wed, 24 Jul 2019 16:46:46 +0200
From:   Christian Brauner <christian@...uner.io>
To:     linux-kernel@...r.kernel.org, oleg@...hat.com
Cc:     arnd@...db.de, ebiederm@...ssion.com, keescook@...omium.org,
        joel@...lfernandes.org, tglx@...utronix.de, tj@...nel.org,
        dhowells@...hat.com, jannh@...gle.com, luto@...nel.org,
        akpm@...ux-foundation.org, cyphar@...har.com,
        torvalds@...ux-foundation.org, viro@...iv.linux.org.uk,
        kernel-team@...roid.com, Christian Brauner <christian@...uner.io>
Subject: [PATCH 0/5] pidfd: waiting on processes through pidfds

Hey everyone,

This adds the ability to wait on processes using pidfds. This is one of
the few missing pieces to make it possible to manage processes using
only pidfds.

pidfd_wait() does explicitly not allow scoping of the process referred
to by the pidfd, i.e. generic wait requests such as P_PGID and P_ALL and
other trickery such as passing in negative values and so on is not
supported.

The series also adds support for CLONE_WAIT_PID which prevents the
process referred to by the pidfd to appear in generic wait requests
similar to what is the default in FreeBSD.
This feature has been requested multiple times when I gave talks about
this work (for extensions see [1]).

The syscall patch is rather small overall. The largest portion of this
series are the tests and the cleanup to remove struct waitid_info from
exit.c.

Thanks!
Christian

[1]: In the future, we might add something like
     CLONE_WAIT_STATUS_FOREIGN (or some better name).
     Such pidfds will allow anyone to retrieve the exit status of a
     non-parent process by calling pidfd_wait() on it without reaping
     it. This has also been requested quite often and fits nicely into
     the api. But that's for a later patchset.

Christian Brauner (5):
  exit: kill struct waitid_info
  pidfd: add pidfd_wait()
  arch: wire-up pidfd_wait()
  pidfd: add CLONE_WAIT_PID
  pidfd: add pidfd_wait tests

 arch/alpha/kernel/syscalls/syscall.tbl      |   1 +
 arch/arm/tools/syscall.tbl                  |   1 +
 arch/arm64/include/asm/unistd.h             |   2 +-
 arch/arm64/include/asm/unistd32.h           |   4 +-
 arch/ia64/kernel/syscalls/syscall.tbl       |   1 +
 arch/m68k/kernel/syscalls/syscall.tbl       |   1 +
 arch/microblaze/kernel/syscalls/syscall.tbl |   1 +
 arch/mips/kernel/syscalls/syscall_n32.tbl   |   1 +
 arch/mips/kernel/syscalls/syscall_n64.tbl   |   1 +
 arch/mips/kernel/syscalls/syscall_o32.tbl   |   1 +
 arch/parisc/kernel/syscalls/syscall.tbl     |   1 +
 arch/powerpc/kernel/syscalls/syscall.tbl    |   1 +
 arch/s390/kernel/syscalls/syscall.tbl       |   1 +
 arch/sh/kernel/syscalls/syscall.tbl         |   1 +
 arch/sparc/kernel/syscalls/syscall.tbl      |   1 +
 arch/x86/entry/syscalls/syscall_32.tbl      |   1 +
 arch/x86/entry/syscalls/syscall_64.tbl      |   1 +
 arch/xtensa/kernel/syscalls/syscall.tbl     |   1 +
 include/linux/pid.h                         |   5 +
 include/linux/sched.h                       |   1 +
 include/linux/syscalls.h                    |   4 +
 include/uapi/asm-generic/unistd.h           |   4 +-
 include/uapi/linux/sched.h                  |   1 +
 kernel/exit.c                               | 191 ++++++----
 kernel/fork.c                               |  19 +-
 kernel/signal.c                             |   7 +-
 tools/testing/selftests/pidfd/pidfd.h       |  25 ++
 tools/testing/selftests/pidfd/pidfd_test.c  |  14 -
 tools/testing/selftests/pidfd/pidfd_wait.c  | 398 ++++++++++++++++++++
 29 files changed, 606 insertions(+), 85 deletions(-)
 create mode 100644 tools/testing/selftests/pidfd/pidfd_wait.c

-- 
2.22.0

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ