tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   f8394f232b1eab649ce2df5c5f15b0e528c92091
commit: e5fc436f06eef54ef512ea55a9db8eb9f2e76959 sparse: use static inline for 
__chk_{user,io}_ptr()
date:   2 months ago
config: arm-randconfig-s031-20201105 (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
reproduce:
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.3-76-gf680124b-dirty
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e5fc436f06eef54ef512ea55a9db8eb9f2e76959
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout e5fc436f06eef54ef512ea55a9db8eb9f2e76959
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 
CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=arm 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>


"sparse warnings: (new ones prefixed by >>)"
>> arch/arm/kernel/swp_emulate.c:198:14: sparse: sparse: incorrect type in 
>> argument 1 (different base types) @@     expected void const volatile 
>> [noderef] __user *ptr @@     got unsigned int @@
>> arch/arm/kernel/swp_emulate.c:198:14: sparse:     expected void const 
>> volatile [noderef] __user *ptr
   arch/arm/kernel/swp_emulate.c:198:14: sparse:     got unsigned int

vim +198 arch/arm/kernel/swp_emulate.c

64d2dc384e41e2b Leif Lindholm  2010-09-16  153  
64d2dc384e41e2b Leif Lindholm  2010-09-16  154  /*
64d2dc384e41e2b Leif Lindholm  2010-09-16  155   * swp_handler logs the id of 
calling process, dissects the instruction, sanity
64d2dc384e41e2b Leif Lindholm  2010-09-16  156   * checks the memory location, 
calls emulate_swpX for the actual operation and
64d2dc384e41e2b Leif Lindholm  2010-09-16  157   * deals with fixup/error 
handling before returning
64d2dc384e41e2b Leif Lindholm  2010-09-16  158   */
64d2dc384e41e2b Leif Lindholm  2010-09-16  159  static int swp_handler(struct 
pt_regs *regs, unsigned int instr)
64d2dc384e41e2b Leif Lindholm  2010-09-16  160  {
64d2dc384e41e2b Leif Lindholm  2010-09-16  161          unsigned int address, 
destreg, data, type;
64d2dc384e41e2b Leif Lindholm  2010-09-16  162          unsigned int res = 0;
64d2dc384e41e2b Leif Lindholm  2010-09-16  163  
a8b0ca17b80e92f Peter Zijlstra 2011-06-27  164          
perf_sw_event(PERF_COUNT_SW_EMULATION_FAULTS, 1, regs, regs->ARM_pc);
64d2dc384e41e2b Leif Lindholm  2010-09-16  165  
c245dcd326fb9f8 Leif Lindholm  2011-12-12  166          res = 
arm_check_condition(instr, regs->ARM_cpsr);
c245dcd326fb9f8 Leif Lindholm  2011-12-12  167          switch (res) {
c245dcd326fb9f8 Leif Lindholm  2011-12-12  168          case 
ARM_OPCODE_CONDTEST_PASS:
c245dcd326fb9f8 Leif Lindholm  2011-12-12  169                  break;
c245dcd326fb9f8 Leif Lindholm  2011-12-12  170          case 
ARM_OPCODE_CONDTEST_FAIL:
c245dcd326fb9f8 Leif Lindholm  2011-12-12  171                  /* Condition 
failed - return to next instruction */
c245dcd326fb9f8 Leif Lindholm  2011-12-12  172                  regs->ARM_pc += 
4;
c245dcd326fb9f8 Leif Lindholm  2011-12-12  173                  return 0;
c245dcd326fb9f8 Leif Lindholm  2011-12-12  174          case 
ARM_OPCODE_CONDTEST_UNCOND:
c245dcd326fb9f8 Leif Lindholm  2011-12-12  175                  /* If 
unconditional encoding - not a SWP, undef */
c245dcd326fb9f8 Leif Lindholm  2011-12-12  176                  return -EFAULT;
c245dcd326fb9f8 Leif Lindholm  2011-12-12  177          default:
c245dcd326fb9f8 Leif Lindholm  2011-12-12  178                  return -EINVAL;
c245dcd326fb9f8 Leif Lindholm  2011-12-12  179          }
c245dcd326fb9f8 Leif Lindholm  2011-12-12  180  
64d2dc384e41e2b Leif Lindholm  2010-09-16  181          if (current->pid != 
previous_pid) {
64d2dc384e41e2b Leif Lindholm  2010-09-16  182                  
pr_debug("\"%s\" (%ld) uses deprecated SWP{B} instruction\n",
64d2dc384e41e2b Leif Lindholm  2010-09-16  183                           
current->comm, (unsigned long)current->pid);
64d2dc384e41e2b Leif Lindholm  2010-09-16  184                  previous_pid = 
current->pid;
64d2dc384e41e2b Leif Lindholm  2010-09-16  185          }
64d2dc384e41e2b Leif Lindholm  2010-09-16  186  
64d2dc384e41e2b Leif Lindholm  2010-09-16  187          address = 
regs->uregs[EXTRACT_REG_NUM(instr, RN_OFFSET)];
64d2dc384e41e2b Leif Lindholm  2010-09-16  188          data    = 
regs->uregs[EXTRACT_REG_NUM(instr, RT2_OFFSET)];
64d2dc384e41e2b Leif Lindholm  2010-09-16  189          destreg = 
EXTRACT_REG_NUM(instr, RT_OFFSET);
64d2dc384e41e2b Leif Lindholm  2010-09-16  190  
64d2dc384e41e2b Leif Lindholm  2010-09-16  191          type = instr & 
TYPE_SWPB;
64d2dc384e41e2b Leif Lindholm  2010-09-16  192  
64d2dc384e41e2b Leif Lindholm  2010-09-16  193          pr_debug("addr in 
r%d->0x%08x, dest is r%d, source in r%d->0x%08x)\n",
64d2dc384e41e2b Leif Lindholm  2010-09-16  194                   
EXTRACT_REG_NUM(instr, RN_OFFSET), address,
64d2dc384e41e2b Leif Lindholm  2010-09-16  195                   destreg, 
EXTRACT_REG_NUM(instr, RT2_OFFSET), data);
64d2dc384e41e2b Leif Lindholm  2010-09-16  196  
64d2dc384e41e2b Leif Lindholm  2010-09-16  197          /* Check access in 
reasonable access range for both SWP and SWPB */
96d4f267e40f950 Linus Torvalds 2019-01-03 @198          if (!access_ok((address 
& ~3), 4)) {
64d2dc384e41e2b Leif Lindholm  2010-09-16  199                  
pr_debug("SWP{B} emulation: access to %p not allowed!\n",
64d2dc384e41e2b Leif Lindholm  2010-09-16  200                           (void 
*)address);
64d2dc384e41e2b Leif Lindholm  2010-09-16  201                  res = -EFAULT;
64d2dc384e41e2b Leif Lindholm  2010-09-16  202          } else {
64d2dc384e41e2b Leif Lindholm  2010-09-16  203                  res = 
emulate_swpX(address, &data, type);
64d2dc384e41e2b Leif Lindholm  2010-09-16  204          }
64d2dc384e41e2b Leif Lindholm  2010-09-16  205  
64d2dc384e41e2b Leif Lindholm  2010-09-16  206          if (res == 0) {
64d2dc384e41e2b Leif Lindholm  2010-09-16  207                  /*
64d2dc384e41e2b Leif Lindholm  2010-09-16  208                   * On 
successful emulation, revert the adjustment to the PC
64d2dc384e41e2b Leif Lindholm  2010-09-16  209                   * made in 
kernel/traps.c in order to resume execution at the
64d2dc384e41e2b Leif Lindholm  2010-09-16  210                   * instruction 
following the SWP{B}.
64d2dc384e41e2b Leif Lindholm  2010-09-16  211                   */
64d2dc384e41e2b Leif Lindholm  2010-09-16  212                  regs->ARM_pc += 
4;
64d2dc384e41e2b Leif Lindholm  2010-09-16  213                  
regs->uregs[destreg] = data;
64d2dc384e41e2b Leif Lindholm  2010-09-16  214          } else if (res == 
-EFAULT) {
64d2dc384e41e2b Leif Lindholm  2010-09-16  215                  /*
64d2dc384e41e2b Leif Lindholm  2010-09-16  216                   * Memory 
errors do not mean emulation failed.
64d2dc384e41e2b Leif Lindholm  2010-09-16  217                   * Set up 
signal info to return SEGV, then return OK
64d2dc384e41e2b Leif Lindholm  2010-09-16  218                   */
64d2dc384e41e2b Leif Lindholm  2010-09-16  219                  
set_segfault(regs, address);
64d2dc384e41e2b Leif Lindholm  2010-09-16  220          }
64d2dc384e41e2b Leif Lindholm  2010-09-16  221  
64d2dc384e41e2b Leif Lindholm  2010-09-16  222          return 0;
64d2dc384e41e2b Leif Lindholm  2010-09-16  223  }
64d2dc384e41e2b Leif Lindholm  2010-09-16  224  

:::::: The code at line 198 was first introduced by commit
:::::: 96d4f267e40f9509e8a66e2b39e8b95655617693 Remove 'type' argument from 
access_ok() function

:::::: TO: Linus Torvalds <torva...@linux-foundation.org>
:::::: CC: Linus Torvalds <torva...@linux-foundation.org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

Reply via email to