Re: [PATCH] sched/cpuacct: Check for NULL when using task_pt_regs()
* Michael Ellermanwrote: > On Wed, 2016-04-13 at 09:43 +0200, Ingo Molnar wrote: > > * Srikar Dronamraju wrote: > > > > > * Anton Blanchard [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 > > > > > > Works for me too. > > > > > > Reported-and-Tested-by: Srikar Dronamraju > > > > 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 an...@samba.org does not designate 198.145.29.136 as permitted sender) client-ip=198.145.29.136; have the patch now. Thanks, Ingo ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [PATCH] sched/cpuacct: Check for NULL when using task_pt_regs()
On Wed, 2016-04-13 at 09:43 +0200, Ingo Molnar wrote: > * Srikar Dronamrajuwrote: > > > * Anton Blanchard [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 > > > > Works for me too. > > > > Reported-and-Tested-by: Srikar Dronamraju > > 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 ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
[PATCH] sched/cpuacct: Check for NULL when using task_pt_regs()
task_pt_regs() can return NULL for kernel threads, so add a check. This fixes an oops at boot on ppc64. Fixes: d740037fac70 ("sched/cpuacct: Split usage accounting into user_usage and sys_usage") Signed-off-by: Anton BlanchardReported-and-Tested-by: Srikar Dronamraju --- 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(); ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [PATCH] sched/cpuacct: Check for NULL when using task_pt_regs()
* Srikar Dronamrajuwrote: > * Anton Blanchard [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 > > Works for me too. > > Reported-and-Tested-by: Srikar Dronamraju Could someone please re-send the fix, because it has not reached me nor lkml. Thanks, Ingo ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Ping? Re: [PATCH] sched/cpuacct: Check for NULL when using task_pt_regs()
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> --- > > 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(); > > ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
RE: [PATCH] sched/cpuacct: Check for NULL when using task_pt_regs()
> -Original Message- > From: Srikar Dronamraju [mailto:sri...@linux.vnet.ibm.com] > Sent: Wednesday, April 06, 2016 9:27 PM > To: Anton Blanchard <an...@samba.org> > Cc: Peter Zijlstra <pet...@infradead.org>; Ingo Molnar <mi...@kernel.org>; > t...@linutronix.de; efa...@gmx.de; hte...@gmail.com; > linux-ker...@vger.kernel.org; t...@kernel.org; torva...@linux-foundation.org; > zhao...@cn.fujitsu.com; yangds.f...@cn.fujitsu.com; h...@zytor.com; Stephen > Rothwell <s...@canb.auug.org.au>; Michael Ellerman <m...@ellerman.id.au>; > linuxppc-dev@lists.ozlabs.org > Subject: Re: [PATCH] sched/cpuacct: Check for NULL when using task_pt_regs() > > * Anton Blanchard <an...@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 <an...@samba.org> > > Works for me too. > > Reported-and-Tested-by: Srikar Dronamraju <sri...@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.00MHz revision: 2.3 (pvr 003f 0203) processor : 1 cpu : POWER7 (raw), altivec supported clock : 1000.00MHz revision: 2.3 (pvr 003f 0203) timebase: 51200 platform: pSeries model : IBM pSeries (emulated by qemu) machine : CHRP IBM pSeries (emulated by qemu) # Thanks Zhaolei > -- > Thanks and Regards > Srikar Dronamraju > ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [PATCH] sched/cpuacct: Check for NULL when using task_pt_regs()
* Anton Blanchard[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 Works for me too. Reported-and-Tested-by: Srikar Dronamraju -- Thanks and Regards Srikar Dronamraju ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
[PATCH] sched/cpuacct: Check for NULL when using task_pt_regs()
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. 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--- 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(); ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev