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: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20211110145222.1967514-1-brauner@kernel.org>
Date:   Wed, 10 Nov 2021 15:52:23 +0100
From:   Christian Brauner <brauner@...nel.org>
To:     Linus Torvalds <torvalds@...ux-foundation.org>
Cc:     linux-kernel@...r.kernel.org
Subject: [GIT PULL] pidfd updates

Hi Linus,

/* Summary */
Various places in the kernel have picked up pidfds. The two most recent
additions have probably been the ability to use pidfds in bpf maps and the
usage of pidfds in mm-based syscalls such as process_mrelease() and
process_madvise(). The same pattern to turn a pidfd into a struct task exists
in two places. One of those places used PIDTYPE_TGID while the other one used
PIDTYPE_PID even though it is clearly documented in all pidfd-helpers that
pidfds __currently__ only refer to thread-group leaders (subject to change in
the future if need be). This isn't a bug per se but has the potential to be one
if we allow pidfds to refer to individual threads. If that happens we want to
audit all codepaths that make use of them to ensure they can deal with pidfds
refering to individual threads. This pull request adds a simple helper to turn
a pidfd into a struct task making it easy to grep for such places. Plus, it
gets rid of code-duplication.

(This is coming a bit later than usual because of a few fixes I was working on.)

/* Testing */
All patches have been in linux-next since 5.15-rc5. No build failures or
warnings were observed. All old and new tests are passing.

/* Conflicts */
At the time of creating this PR no merge conflicts were reported from
linux-next. However, a trivial merge conflict exists with current mainline.

diff --cc mm/oom_kill.c
index 195b3661da3d,70d399d5817e..000000000000
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@@ -1149,8 -1150,7 +1149,7 @@@ SYSCALL_DEFINE2(process_mrelease, int,
        struct task_struct *task;
        struct task_struct *p;
        unsigned int f_flags;
 -      bool reap = true;
 +      bool reap = false;
-       struct pid *pid;
        long ret = 0;

        if (flags)
@@@ -1200,12 -1194,9 +1193,10 @@@
        mmap_read_unlock(mm);

  drop_mm:
 -      mmdrop(mm);
 +      if (mm)
 +              mmput(mm);
  put_task:
        put_task_struct(task);
- put_pid:
-       put_pid(pid);
        return ret;
  #else
        return -ENOSYS;

The following changes since commit 64570fbc14f8d7cb3fe3995f20e26bc25ce4b2cc:

  Linux 5.15-rc5 (2021-10-10 17:01:59 -0700)

are available in the Git repository at:

  git@...olite.kernel.org:pub/scm/linux/kernel/git/brauner/linux tags/pidfd.v5.16

for you to fetch changes up to ee9955d61a0a770152f9c3af470bd1689f034c74:

  mm: use pidfd_get_task() (2021-10-14 13:29:22 +0200)

Please consider pulling these changes from the signed pidfd.v5.16 tag.

Thanks!
Christian

----------------------------------------------------------------
pidfd.v5.16

----------------------------------------------------------------
Christian Brauner (2):
      pid: add pidfd_get_task() helper
      mm: use pidfd_get_task()

 include/linux/pid.h |  1 +
 kernel/pid.c        | 36 ++++++++++++++++++++++++++++++++++++
 mm/madvise.c        | 15 +++------------
 mm/oom_kill.c       | 15 +++------------
 4 files changed, 43 insertions(+), 24 deletions(-)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ