aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/pid.h
diff options
context:
space:
mode:
authorOleg Nesterov <oleg@redhat.com>2017-08-21 17:35:02 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2017-08-21 12:47:31 -0700
commitdd1c1f2f2028a7b851f701fc6a8ebe39dcb95e7c (patch)
tree96b5e5466504cc8c88b0f0435e80f70f0c627c58 /include/linux/pid.h
parentLinux 4.13-rc6 (diff)
downloadlinux-dev-dd1c1f2f2028a7b851f701fc6a8ebe39dcb95e7c.tar.xz
linux-dev-dd1c1f2f2028a7b851f701fc6a8ebe39dcb95e7c.zip
pids: make task_tgid_nr_ns() safe
This was reported many times, and this was even mentioned in commit 52ee2dfdd4f5 ("pids: refactor vnr/nr_ns helpers to make them safe") but somehow nobody bothered to fix the obvious problem: task_tgid_nr_ns() is not safe because task->group_leader points to nowhere after the exiting task passes exit_notify(), rcu_read_lock() can not help. We really need to change __unhash_process() to nullify group_leader, parent, and real_parent, but this needs some cleanups. Until then we can turn task_tgid_nr_ns() into another user of __task_pid_nr_ns() and fix the problem. Reported-by: Troy Kensinger <tkensinger@google.com> Signed-off-by: Oleg Nesterov <oleg@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/pid.h')
-rw-r--r--include/linux/pid.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/include/linux/pid.h b/include/linux/pid.h
index 4d179316e431..719582744a2e 100644
--- a/include/linux/pid.h
+++ b/include/linux/pid.h
@@ -8,7 +8,9 @@ enum pid_type
PIDTYPE_PID,
PIDTYPE_PGID,
PIDTYPE_SID,
- PIDTYPE_MAX
+ PIDTYPE_MAX,
+ /* only valid to __task_pid_nr_ns() */
+ __PIDTYPE_TGID
};
/*