Message ID | 20160406215950.04bc3f0b@kryten (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
* Anton Blanchard <anton@samba.org> [2016-04-06 21:59:50]: > Looks good, and the patch below does fix the oops for me. > > Anton > -- > > task_pt_regs() can return NULL for kernel threads, so add a check. > This fixes an oops at boot on ppc64. > > Signed-off-by: Anton Blanchard <anton@samba.org> Works for me too. Reported-and-Tested-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
> -----Original Message----- > From: Srikar Dronamraju [mailto:srikar@linux.vnet.ibm.com] > Sent: Wednesday, April 06, 2016 9:27 PM > To: Anton Blanchard <anton@samba.org> > Cc: Peter Zijlstra <peterz@infradead.org>; Ingo Molnar <mingo@kernel.org>; > tglx@linutronix.de; efault@gmx.de; htejun@gmail.com; > linux-kernel@vger.kernel.org; tj@kernel.org; torvalds@linux-foundation.org; > zhaolei@cn.fujitsu.com; yangds.fnst@cn.fujitsu.com; hpa@zytor.com; Stephen > Rothwell <sfr@canb.auug.org.au>; Michael Ellerman <mpe@ellerman.id.au>; > linuxppc-dev@lists.ozlabs.org > Subject: Re: [PATCH] sched/cpuacct: Check for NULL when using task_pt_regs() > > * Anton Blanchard <anton@samba.org> [2016-04-06 21:59:50]: > > > Looks good, and the patch below does fix the oops for me. > > > > Anton > > -- > > > > task_pt_regs() can return NULL for kernel threads, so add a check. > > This fixes an oops at boot on ppc64. > > > > Signed-off-by: Anton Blanchard <anton@samba.org> > > Works for me too. > > Reported-and-Tested-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com> > Thanks, all I tested it in the vm(can not boot before fix): [single cpu] # for f in cpuacct.*; do echo "$f: "; cat $f; done cpuacct.stat: user 260 system 451 cpuacct.usage: 6923456654 cpuacct.usage_percpu: 6963446178 cpuacct.usage_percpu_sys: 2610934362 cpuacct.usage_percpu_user: 4451667140 cpuacct.usage_sys: 2612684054 cpuacct.usage_user: 4540275322 # [2 cpu wih 8 maxcpus] # for f in cpuacct.*; do echo "$f: "; cat $f; done cpuacct.stat: user 205 system 536 cpuacct.usage: 7293688020 cpuacct.usage_percpu: 3785674990 3551323200 0 0 0 0 0 0 cpuacct.usage_percpu_sys: 2227281124 1635060584 0 0 0 0 0 0 cpuacct.usage_percpu_user: 1567487176 1992278818 0 0 0 0 0 0 cpuacct.usage_sys: 3863445982 cpuacct.usage_user: 3643874038 # # cat /proc/cpuinfo processor : 0 cpu : POWER7 (raw), altivec supported clock : 1000.000000MHz revision : 2.3 (pvr 003f 0203) processor : 1 cpu : POWER7 (raw), altivec supported clock : 1000.000000MHz revision : 2.3 (pvr 003f 0203) timebase : 512000000 platform : pSeries model : IBM pSeries (emulated by qemu) machine : CHRP IBM pSeries (emulated by qemu) # Thanks Zhaolei > -- > Thanks and Regards > Srikar Dronamraju >
Hi Peter/Ingo, On Wed, 2016-04-06 at 21:59 +1000, Anton Blanchard wrote: > Hi Peter, > > > Ah, so sometihng like: > > > > struct pt_regs *regs = task_pt_regs(); > > int index = CPUACCT_USAGE_SYSTEM; > > > > if (regs && user_mode(regs)) > > index = CPUACCT_USAGE_USER; > > > > should work, right? > > Looks good, and the patch below does fix the oops for me. Can we get this merged please? It's blocking all my boot tests. If anyone's bothered: Fixes: d740037fac70 ("sched/cpuacct: Split usage accounting into user_usage and sys_usage") cheers > task_pt_regs() can return NULL for kernel threads, so add a check. > This fixes an oops at boot on ppc64. > > Signed-off-by: Anton Blanchard <anton@samba.org> > --- > > diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c > index df947e0..41f85c4 100644 > --- a/kernel/sched/cpuacct.c > +++ b/kernel/sched/cpuacct.c > @@ -316,12 +316,11 @@ static struct cftype files[] = { > void cpuacct_charge(struct task_struct *tsk, u64 cputime) > { > struct cpuacct *ca; > - int index; > + int index = CPUACCT_USAGE_SYSTEM; > + struct pt_regs *regs = task_pt_regs(tsk); > > - if (user_mode(task_pt_regs(tsk))) > + if (regs && user_mode(regs)) > index = CPUACCT_USAGE_USER; > - else > - index = CPUACCT_USAGE_SYSTEM; > > rcu_read_lock(); > >
* Srikar Dronamraju <srikar@linux.vnet.ibm.com> wrote: > * Anton Blanchard <anton@samba.org> [2016-04-06 21:59:50]: > > > Looks good, and the patch below does fix the oops for me. > > > > Anton > > -- > > > > task_pt_regs() can return NULL for kernel threads, so add a check. > > This fixes an oops at boot on ppc64. > > > > Signed-off-by: Anton Blanchard <anton@samba.org> > > Works for me too. > > Reported-and-Tested-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Could someone please re-send the fix, because it has not reached me nor lkml. Thanks, Ingo
On Wed, 2016-04-13 at 09:43 +0200, Ingo Molnar wrote: > * Srikar Dronamraju <srikar@linux.vnet.ibm.com> wrote: > > > * Anton Blanchard <anton@samba.org> [2016-04-06 21:59:50]: > > > > > Looks good, and the patch below does fix the oops for me. > > > > > > Anton > > > -- > > > > > > task_pt_regs() can return NULL for kernel threads, so add a check. > > > This fixes an oops at boot on ppc64. > > > > > > Signed-off-by: Anton Blanchard <anton@samba.org> > > > > Works for me too. > > > > Reported-and-Tested-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com> > > Could someone please re-send the fix, because it has not reached me nor lkml. It did hit LKML: http://lkml.kernel.org/r/20160406215950.04bc3f0b@kryten But that did have some verbiage at the top. Anton's also resent it directly To you. cheers
* Michael Ellerman <mpe@ellerman.id.au> wrote: > On Wed, 2016-04-13 at 09:43 +0200, Ingo Molnar wrote: > > * Srikar Dronamraju <srikar@linux.vnet.ibm.com> wrote: > > > > > * Anton Blanchard <anton@samba.org> [2016-04-06 21:59:50]: > > > > > > > Looks good, and the patch below does fix the oops for me. > > > > > > > > Anton > > > > -- > > > > > > > > task_pt_regs() can return NULL for kernel threads, so add a check. > > > > This fixes an oops at boot on ppc64. > > > > > > > > Signed-off-by: Anton Blanchard <anton@samba.org> > > > > > > Works for me too. > > > > > > Reported-and-Tested-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com> > > > > Could someone please re-send the fix, because it has not reached me nor lkml. > > It did hit LKML: > > http://lkml.kernel.org/r/20160406215950.04bc3f0b@kryten > > But that did have some verbiage at the top. > > Anton's also resent it directly To you. So it was in my Spam folder, due to the following SPF softfail: Received-SPF: softfail (google.com: domain of transitioning anton@samba.org does not designate 198.145.29.136 as permitted sender) client-ip=198.145.29.136; have the patch now. Thanks, Ingo
diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c index df947e0..41f85c4 100644 --- a/kernel/sched/cpuacct.c +++ b/kernel/sched/cpuacct.c @@ -316,12 +316,11 @@ static struct cftype files[] = { void cpuacct_charge(struct task_struct *tsk, u64 cputime) { struct cpuacct *ca; - int index; + int index = CPUACCT_USAGE_SYSTEM; + struct pt_regs *regs = task_pt_regs(tsk); - if (user_mode(task_pt_regs(tsk))) + if (regs && user_mode(regs)) index = CPUACCT_USAGE_USER; - else - index = CPUACCT_USAGE_SYSTEM; rcu_read_lock();