summaryrefslogtreecommitdiffstats
path: root/kernel/pid.c
diff options
context:
space:
mode:
authorChristian Brauner <brauner@kernel.org>2025-08-19 13:38:26 +0200
committerChristian Brauner <brauner@kernel.org>2025-08-19 13:38:26 +0200
commitda664c6db895f70c2be8c3dd371c273b6f8b920f (patch)
treedc6bd438ecf7475e3b9ffee62406512ab13e464c /kernel/pid.c
parentLinux 6.17-rc1 (diff)
parentpid: change task_state() to use task_ppid_nr_ns() (diff)
downloadlinux-da664c6db895f70c2be8c3dd371c273b6f8b920f.tar.gz
linux-da664c6db895f70c2be8c3dd371c273b6f8b920f.zip
Merge patch series "Improve pid_nr_ns()"
In various places pid_nr_ns() can be called with a NULL pointer. Fix those up and improve pid_nr_ns() callers. Link: https://lore.kernel.org/20250802022123.3536934-1-gxxa03070307@gmail.com Signed-off-by: Christian Brauner <brauner@kernel.org>
Diffstat (limited to 'kernel/pid.c')
-rw-r--r--kernel/pid.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/kernel/pid.c b/kernel/pid.c
index c45a28c16cd2..f62a7df2f04c 100644
--- a/kernel/pid.c
+++ b/kernel/pid.c
@@ -491,7 +491,7 @@ pid_t pid_nr_ns(struct pid *pid, struct pid_namespace *ns)
struct upid *upid;
pid_t nr = 0;
- if (pid && ns->level <= pid->level) {
+ if (pid && ns && ns->level <= pid->level) {
upid = &pid->numbers[ns->level];
if (upid->ns == ns)
nr = upid->nr;
@@ -514,7 +514,8 @@ pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type,
rcu_read_lock();
if (!ns)
ns = task_active_pid_ns(current);
- nr = pid_nr_ns(rcu_dereference(*task_pid_ptr(task, type)), ns);
+ if (ns)
+ nr = pid_nr_ns(rcu_dereference(*task_pid_ptr(task, type)), ns);
rcu_read_unlock();
return nr;