x86/resctrl: Only show tasks' pid in current pid namespace
authorShawn Wang <shawnwang@linux.alibaba.com>
Mon, 15 May 2023 06:04:48 +0000 (14:04 +0800)
committerBorislav Petkov (AMD) <bp@alien8.de>
Tue, 30 May 2023 18:57:39 +0000 (20:57 +0200)
When writing a task id to the "tasks" file in an rdtgroup,
rdtgroup_tasks_write() treats the pid as a number in the current pid
namespace. But when reading the "tasks" file, rdtgroup_tasks_show() shows
the list of global pids from the init namespace, which is confusing and
incorrect.

To be more robust, let the "tasks" file only show pids in the current pid
namespace.

Fixes: e02737d5b826 ("x86/intel_rdt: Add tasks files")
Signed-off-by: Shawn Wang <shawnwang@linux.alibaba.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Acked-by: Reinette Chatre <reinette.chatre@intel.com>
Acked-by: Fenghua Yu <fenghua.yu@intel.com>
Tested-by: Reinette Chatre <reinette.chatre@intel.com>
Link: https://lore.kernel.org/all/20230116071246.97717-1-shawnwang@linux.alibaba.com/
arch/x86/kernel/cpu/resctrl/rdtgroup.c

index 6ad33f355861feab9a1f013ff82e026e9638044b..61cdd9b1bb6d86c3b1a527a39bbde64ddb6de3a0 100644 (file)
@@ -726,11 +726,15 @@ unlock:
 static void show_rdt_tasks(struct rdtgroup *r, struct seq_file *s)
 {
        struct task_struct *p, *t;
+       pid_t pid;
 
        rcu_read_lock();
        for_each_process_thread(p, t) {
-               if (is_closid_match(t, r) || is_rmid_match(t, r))
-                       seq_printf(s, "%d\n", t->pid);
+               if (is_closid_match(t, r) || is_rmid_match(t, r)) {
+                       pid = task_pid_vnr(t);
+                       if (pid)
+                               seq_printf(s, "%d\n", pid);
+               }
        }
        rcu_read_unlock();
 }