From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752465AbdHER6c (ORCPT ); Sat, 5 Aug 2017 13:58:32 -0400 Received: from mx2.suse.de ([195.135.220.15]:58761 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751582AbdHER6a (ORCPT ); Sat, 5 Aug 2017 13:58:30 -0400 MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Date: Sun, 06 Aug 2017 03:58:27 +1000 From: Aleksa Sarai To: Aleksa Sarai Cc: Peter Zijlstra , Ingo Molnar , Aleksa Sarai , Jess Frazelle , linux-kernel@vger.kernel.org, stable@vger.kernel.org, "Eric W. Biederman" Subject: Re: [PATCH] sched: debug: use task_pid_vnr in /proc/$pid/sched Organization: SUSE Linux GmbH In-Reply-To: <20170805165226.31398-1-asarai@suse.com> References: <20170805165226.31398-1-asarai@suse.com> Message-ID: User-Agent: Roundcube Webmail Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2017-08-06 02:52, Aleksa Sarai wrote: > It appears as though the addition of the PID namespace did not update > the output code for /proc/$pid/sched, which made it trivial to figure > out whether a process was inside &init_pid_ns from userspace (making > container detection trivial[1]). This lead to situations such as: > > % unshare -pf head -n1 /proc/self/sched > head (10047, #threads: 1) > > Fix this by just using task_pid_vnr for the output of /proc/$pid/sched. > All of the other uses of task_pid_nr in kernel/sched/debug.c are from a > sysctl context and thus don't need to be namespaced. > > [1]: https://github.com/jessfraz/amicontained > > Cc: > Cc: Jess Frazelle > Signed-off-by: Aleksa Sarai > --- > kernel/sched/debug.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c > index 4fa66de52bd6..a06acbe33e16 100644 > --- a/kernel/sched/debug.c > +++ b/kernel/sched/debug.c > @@ -876,7 +876,7 @@ void proc_sched_show_task(struct task_struct *p, > struct seq_file *m) > { > unsigned long nr_switches; > > - SEQ_printf(m, "%s (%d, #threads: %d)\n", p->comm, task_pid_nr(p), > + SEQ_printf(m, "%s (%d, #threads: %d)\n", p->comm, task_pid_vnr(p), > get_nr_threads(p)); > SEQ_printf(m, > "---------------------------------------------------------" Added Eric to Cc. -- Aleksa Sarai Software Engineer (Containers) SUSE Linux GmbH https://www.cyphar.com/