Subject: Re: [PATCH?] powerpc: Hard wire PT_SOFTE value to 1 in gpr_get() too

From: kbuild test robot <[email-masked]>
Date: Tue, 17 Sep 2019 22:09:51 +0800

Hi Oleg,

I love your patch! Yet something to improve:

[auto build test ERROR on linus/master]
[cannot apply to v5.3 next-20190916]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Oleg-Nesterov/powerpc-Hard-wire-PT_SOFTE-value-to-1-in-gpr_get-too/20190917-201613
config: powerpc-allmodconfig (attached as .config)
compiler: powerpc64-linux-gcc (GCC) 7.4.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.4.0 make.cross ARCH=powerpc 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <[email-masked]>

All errors (new ones prefixed by >>):

   arch/powerpc/kernel/ptrace.c: In function 'gpr_get':
>> arch/powerpc/kernel/ptrace.c:375:58: error: 'msr' undeclared (first use in this function)
      ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf, &msr,
                                                             ^~~
   arch/powerpc/kernel/ptrace.c:375:58: note: each undeclared identifier is reported only once for each function it appears in

vim +/msr +375 arch/powerpc/kernel/ptrace.c

   336	
   337	static int gpr_get(struct task_struct *target, const struct user_regset *regset,
   338			   unsigned int pos, unsigned int count,
   339			   void *kbuf, void __user *ubuf)
   340	{
   341		int i, ret;
   342	
   343		if (target->thread.regs == NULL)
   344			return -EIO;
   345	
   346		if (!FULL_REGS(target->thread.regs)) {
   347			/* We have a partial register set.  Fill 14-31 with bogus values */
   348			for (i = 14; i < 32; i++)
   349				target->thread.regs->gpr[i] = NV_REG_POISON;
   350		}
   351	
   352		ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf,
   353					  target->thread.regs,
   354					  0, offsetof(struct pt_regs, msr));
   355		if (!ret) {
   356			unsigned long msr = get_user_msr(target);
   357			ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf, &msr,
   358						  offsetof(struct pt_regs, msr),
   359						  offsetof(struct pt_regs, msr) +
   360						  sizeof(msr));
   361		}
   362	
   363		BUILD_BUG_ON(offsetof(struct pt_regs, orig_gpr3) !=
   364			     offsetof(struct pt_regs, msr) + sizeof(long));
   365	
   366	#ifdef CONFIG_PPC64
   367		if (!ret)
   368			ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf,
   369						  &target->thread.regs->orig_gpr3,
   370						  offsetof(struct pt_regs, orig_gpr3),
   371						  offsetof(struct pt_regs, softe));
   372	
   373		if (!ret) {
   374			unsigned long softe = 0x1;
 > 375			ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf, &msr,
   376						  offsetof(struct pt_regs, softe),
   377						  offsetof(struct pt_regs, softe) +
   378						  sizeof(softe));
   379		}
   380	
   381		BUILD_BUG_ON(offsetof(struct pt_regs, trap) !=
   382			     offsetof(struct pt_regs, softe) + sizeof(long));
   383	
   384		if (!ret)
   385			ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf,
   386						  &target->thread.regs->trap,
   387						  offsetof(struct pt_regs, trap),
   388						  sizeof(struct user_pt_regs));
   389	#else
   390		if (!ret)
   391			ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf,
   392						  &target->thread.regs->orig_gpr3,
   393						  offsetof(struct pt_regs, orig_gpr3),
   394						  sizeof(struct user_pt_regs));
   395	#endif
   396		if (!ret)
   397			ret = user_regset_copyout_zero(&pos, &count, &kbuf, &ubuf,
   398						       sizeof(struct user_pt_regs), -1);
   399	
   400		return ret;
   401	}
   402	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation