[PATCH] powerpc/ptrace: Split gpr32_set_common

kernel test robot lkp at intel.com
Wed Jun 21 22:39:24 AEST 2023


Hi Christophe,

kernel test robot noticed the following build warnings:

[auto build test WARNING on powerpc/next]
[also build test WARNING on powerpc/fixes linus/master v6.4-rc7 next-20230621]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Christophe-Leroy/powerpc-ptrace-Split-gpr32_set_common/20230621-183932
base:   https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next
patch link:    https://lore.kernel.org/r/3086d189fa629e6c7bf800832921669450cc09bf.1687343697.git.christophe.leroy%40csgroup.eu
patch subject: [PATCH] powerpc/ptrace: Split gpr32_set_common
config: powerpc-allyesconfig (https://download.01.org/0day-ci/archive/20230621/202306212029.AbMrgmSQ-lkp@intel.com/config)
compiler: powerpc-linux-gcc (GCC) 12.3.0
reproduce: (https://download.01.org/0day-ci/archive/20230621/202306212029.AbMrgmSQ-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202306212029.AbMrgmSQ-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> arch/powerpc/kernel/ptrace/ptrace-view.c:719:5: warning: no previous prototype for 'gpr32_set_common_kernel' [-Wmissing-prototypes]
     719 | int gpr32_set_common_kernel(struct task_struct *target,
         |     ^~~~~~~~~~~~~~~~~~~~~~~
>> arch/powerpc/kernel/ptrace/ptrace-view.c:757:5: warning: no previous prototype for 'gpr32_set_common_user' [-Wmissing-prototypes]
     757 | int gpr32_set_common_user(struct task_struct *target,
         |     ^~~~~~~~~~~~~~~~~~~~~


vim +/gpr32_set_common_kernel +719 arch/powerpc/kernel/ptrace/ptrace-view.c

   718	
 > 719	int gpr32_set_common_kernel(struct task_struct *target,
   720				    const struct user_regset *regset,
   721				    unsigned int pos, unsigned int count,
   722				    const void *kbuf, unsigned long *regs)
   723	{
   724		const compat_ulong_t *k = kbuf;
   725	
   726		pos /= sizeof(compat_ulong_t);
   727		count /= sizeof(compat_ulong_t);
   728	
   729		for (; count > 0 && pos < PT_MSR; --count)
   730			regs[pos++] = *k++;
   731	
   732		if (count > 0 && pos == PT_MSR) {
   733			set_user_msr(target, *k++);
   734			++pos;
   735			--count;
   736		}
   737	
   738		for (; count > 0 && pos <= PT_MAX_PUT_REG; --count)
   739			regs[pos++] = *k++;
   740		for (; count > 0 && pos < PT_TRAP; --count, ++pos)
   741			++k;
   742	
   743		if (count > 0 && pos == PT_TRAP) {
   744			set_user_trap(target, *k++);
   745			++pos;
   746			--count;
   747		}
   748	
   749		kbuf = k;
   750		pos *= sizeof(compat_ulong_t);
   751		count *= sizeof(compat_ulong_t);
   752		user_regset_copyin_ignore(&pos, &count, &kbuf, NULL,
   753					  (PT_TRAP + 1) * sizeof(compat_ulong_t), -1);
   754		return 0;
   755	}
   756	
 > 757	int gpr32_set_common_user(struct task_struct *target,
   758				  const struct user_regset *regset,
   759				  unsigned int pos, unsigned int count,
   760				  const void __user *ubuf, unsigned long *regs)
   761	{
   762		const compat_ulong_t __user *u = ubuf;
   763		compat_ulong_t reg;
   764	
   765		if (!user_read_access_begin(u, count))
   766			return -EFAULT;
   767	
   768		pos /= sizeof(reg);
   769		count /= sizeof(reg);
   770	
   771		for (; count > 0 && pos < PT_MSR; --count) {
   772			unsafe_get_user(reg, u++, Efault);
   773			regs[pos++] = reg;
   774		}
   775	
   776		if (count > 0 && pos == PT_MSR) {
   777			unsafe_get_user(reg, u++, Efault);
   778			set_user_msr(target, reg);
   779			++pos;
   780			--count;
   781		}
   782	
   783		for (; count > 0 && pos <= PT_MAX_PUT_REG; --count) {
   784			unsafe_get_user(reg, u++, Efault);
   785			regs[pos++] = reg;
   786		}
   787		for (; count > 0 && pos < PT_TRAP; --count, ++pos)
   788			unsafe_get_user(reg, u++, Efault);
   789	
   790		if (count > 0 && pos == PT_TRAP) {
   791			unsafe_get_user(reg, u++, Efault);
   792			set_user_trap(target, reg);
   793			++pos;
   794			--count;
   795		}
   796		user_read_access_end();
   797	
   798		ubuf = u;
   799		pos *= sizeof(reg);
   800		count *= sizeof(reg);
   801		user_regset_copyin_ignore(&pos, &count, NULL, &ubuf,
   802					  (PT_TRAP + 1) * sizeof(reg), -1);
   803		return 0;
   804	
   805	Efault:
   806		user_read_access_end();
   807		return -EFAULT;
   808	}
   809	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


More information about the Linuxppc-dev mailing list