On Wed, Apr 06, 2016 at 08:32:19PM +1000, Anton Blanchard wrote:
> Hi,
> 
> > > >  void cpuacct_charge(struct task_struct *tsk, u64 cputime)
> > > >  {
> > > >         struct cpuacct *ca;
> > > > +       int index;
> > > > +
> > > > +       if (user_mode(task_pt_regs(tsk)))
> > > > +               index = CPUACCT_USAGE_USER;
> > > > +       else
> > > > +               index = CPUACCT_USAGE_SYSTEM;
> 
> This is oopsing because PowerPC task_pt_regs() returns NULL for
> kernel threads.

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?


Reply via email to