lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <202208020949.LCC9Ch2H-lkp@intel.com>
Date:   Tue, 2 Aug 2022 09:04:10 +0800
From:   kernel test robot <lkp@...el.com>
To:     Thomas Gleixner <tglx@...utronix.de>
Cc:     kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org,
        Borislav Petkov <bp@...e.de>
Subject: arch/x86/kernel/fpu/xstate.c:1117:7: warning: Local variable 'mask'
 shadows outer variable [shadowVariable]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   9de1f9c8ca5100a02a2e271bdbde36202e251b4b
commit: 522e92743b35351bda1b6a9136560f833a9c2490 x86/fpu: Deduplicate copy_uabi_from_user/kernel_to_xstate()
date:   1 year, 1 month ago
compiler: gcc-11 (Debian 11.3.0-3) 11.3.0
reproduce (cppcheck warning):
        # apt-get install cppcheck
        git checkout 522e92743b35351bda1b6a9136560f833a9c2490
        cppcheck --quiet --enable=style,performance,portability --template=gcc FILE

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@...el.com>

cppcheck warnings: (new ones prefixed by >>)
>> arch/x86/kernel/fpu/xstate.c:1117:7: warning: Local variable 'mask' shadows outer variable [shadowVariable]
     u64 mask = ((u64)1 << i);
         ^
   arch/x86/kernel/fpu/xstate.c:1086:6: note: Shadowed declaration
    u64 mask;
        ^
   arch/x86/kernel/fpu/xstate.c:1117:7: note: Shadow variable
     u64 mask = ((u64)1 << i);
         ^

cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

>> drivers/thermal/intel/therm_throt.c:323:12: warning: Using pointer that is a temporary. [danglingTemporaryLifetime]
      state = &pstate->core_throttle;
              ^
   drivers/thermal/intel/therm_throt.c:318:33: note: Address of variable taken here.
    struct thermal_state *pstate = &per_cpu(thermal_state, this_cpu);
                                   ^
   drivers/thermal/intel/therm_throt.c:323:12: note: Address of variable taken here.
      state = &pstate->core_throttle;
              ^
   drivers/thermal/intel/therm_throt.c:318:41: note: Temporary created here.
    struct thermal_state *pstate = &per_cpu(thermal_state, this_cpu);
                                           ^
   drivers/thermal/intel/therm_throt.c:323:12: note: Using pointer that is a temporary.
      state = &pstate->core_throttle;
              ^
   drivers/thermal/intel/therm_throt.c:323:13: warning: Using pointer that is a temporary. [danglingTemporaryLifetime]
      state = &pstate->core_throttle;
               ^
   drivers/thermal/intel/therm_throt.c:318:33: note: Address of variable taken here.
    struct thermal_state *pstate = &per_cpu(thermal_state, this_cpu);
                                   ^
   drivers/thermal/intel/therm_throt.c:318:41: note: Temporary created here.
    struct thermal_state *pstate = &per_cpu(thermal_state, this_cpu);
                                           ^
   drivers/thermal/intel/therm_throt.c:323:13: note: Using pointer that is a temporary.
      state = &pstate->core_throttle;
               ^
   drivers/thermal/intel/therm_throt.c:325:12: warning: Using pointer that is a temporary. [danglingTemporaryLifetime]
      state = &pstate->core_power_limit;
              ^
   drivers/thermal/intel/therm_throt.c:318:33: note: Address of variable taken here.
    struct thermal_state *pstate = &per_cpu(thermal_state, this_cpu);
                                   ^
   drivers/thermal/intel/therm_throt.c:325:12: note: Address of variable taken here.
      state = &pstate->core_power_limit;
              ^
   drivers/thermal/intel/therm_throt.c:318:41: note: Temporary created here.
    struct thermal_state *pstate = &per_cpu(thermal_state, this_cpu);
                                           ^
   drivers/thermal/intel/therm_throt.c:325:12: note: Using pointer that is a temporary.
      state = &pstate->core_power_limit;
              ^
   drivers/thermal/intel/therm_throt.c:325:13: warning: Using pointer that is a temporary. [danglingTemporaryLifetime]
      state = &pstate->core_power_limit;
               ^
   drivers/thermal/intel/therm_throt.c:318:33: note: Address of variable taken here.
    struct thermal_state *pstate = &per_cpu(thermal_state, this_cpu);
                                   ^
   drivers/thermal/intel/therm_throt.c:318:41: note: Temporary created here.
    struct thermal_state *pstate = &per_cpu(thermal_state, this_cpu);
                                           ^
   drivers/thermal/intel/therm_throt.c:325:13: note: Using pointer that is a temporary.
      state = &pstate->core_power_limit;
               ^
   drivers/thermal/intel/therm_throt.c:330:12: warning: Using pointer that is a temporary. [danglingTemporaryLifetime]
      state = &pstate->package_throttle;
              ^
   drivers/thermal/intel/therm_throt.c:318:33: note: Address of variable taken here.
    struct thermal_state *pstate = &per_cpu(thermal_state, this_cpu);
                                   ^
   drivers/thermal/intel/therm_throt.c:330:12: note: Address of variable taken here.
      state = &pstate->package_throttle;
              ^
   drivers/thermal/intel/therm_throt.c:318:41: note: Temporary created here.
    struct thermal_state *pstate = &per_cpu(thermal_state, this_cpu);
                                           ^
   drivers/thermal/intel/therm_throt.c:330:12: note: Using pointer that is a temporary.
      state = &pstate->package_throttle;
              ^
   drivers/thermal/intel/therm_throt.c:330:13: warning: Using pointer that is a temporary. [danglingTemporaryLifetime]
      state = &pstate->package_throttle;
               ^
   drivers/thermal/intel/therm_throt.c:318:33: note: Address of variable taken here.
    struct thermal_state *pstate = &per_cpu(thermal_state, this_cpu);
                                   ^
   drivers/thermal/intel/therm_throt.c:318:41: note: Temporary created here.
    struct thermal_state *pstate = &per_cpu(thermal_state, this_cpu);
                                           ^
   drivers/thermal/intel/therm_throt.c:330:13: note: Using pointer that is a temporary.
      state = &pstate->package_throttle;
               ^
   drivers/thermal/intel/therm_throt.c:332:12: warning: Using pointer that is a temporary. [danglingTemporaryLifetime]
      state = &pstate->package_power_limit;
              ^
   drivers/thermal/intel/therm_throt.c:318:33: note: Address of variable taken here.
    struct thermal_state *pstate = &per_cpu(thermal_state, this_cpu);
                                   ^
   drivers/thermal/intel/therm_throt.c:332:12: note: Address of variable taken here.
      state = &pstate->package_power_limit;
              ^
   drivers/thermal/intel/therm_throt.c:318:41: note: Temporary created here.
    struct thermal_state *pstate = &per_cpu(thermal_state, this_cpu);
                                           ^
   drivers/thermal/intel/therm_throt.c:332:12: note: Using pointer that is a temporary.
      state = &pstate->package_power_limit;
              ^
   drivers/thermal/intel/therm_throt.c:332:13: warning: Using pointer that is a temporary. [danglingTemporaryLifetime]
      state = &pstate->package_power_limit;
               ^
   drivers/thermal/intel/therm_throt.c:318:33: note: Address of variable taken here.
    struct thermal_state *pstate = &per_cpu(thermal_state, this_cpu);
--

vim +/mask +1117 arch/x86/kernel/fpu/xstate.c

947f4947cf00ea Thomas Gleixner           2021-06-23  1079  
522e92743b3535 Thomas Gleixner           2021-06-23  1080  
522e92743b3535 Thomas Gleixner           2021-06-23  1081  static int copy_uabi_to_xstate(struct xregs_state *xsave, const void *kbuf,
522e92743b3535 Thomas Gleixner           2021-06-23  1082  			       const void __user *ubuf)
79fecc2b7506f2 Ingo Molnar               2017-09-23  1083  {
79fecc2b7506f2 Ingo Molnar               2017-09-23  1084  	unsigned int offset, size;
80d8ae86b36791 Eric Biggers              2017-09-24  1085  	struct xstate_header hdr;
522e92743b3535 Thomas Gleixner           2021-06-23  1086  	u64 mask;
522e92743b3535 Thomas Gleixner           2021-06-23  1087  	int i;
79fecc2b7506f2 Ingo Molnar               2017-09-23  1088  
79fecc2b7506f2 Ingo Molnar               2017-09-23  1089  	offset = offsetof(struct xregs_state, header);
522e92743b3535 Thomas Gleixner           2021-06-23  1090  	if (copy_from_buffer(&hdr, offset, sizeof(hdr), kbuf, ubuf))
522e92743b3535 Thomas Gleixner           2021-06-23  1091  		return -EFAULT;
79fecc2b7506f2 Ingo Molnar               2017-09-23  1092  
5274e6c172c472 Fenghua Yu                2020-05-12  1093  	if (validate_user_xstate_header(&hdr))
79fecc2b7506f2 Ingo Molnar               2017-09-23  1094  		return -EINVAL;
79fecc2b7506f2 Ingo Molnar               2017-09-23  1095  
522e92743b3535 Thomas Gleixner           2021-06-23  1096  	/* Validate MXCSR when any of the related features is in use */
522e92743b3535 Thomas Gleixner           2021-06-23  1097  	mask = XFEATURE_MASK_FP | XFEATURE_MASK_SSE | XFEATURE_MASK_YMM;
522e92743b3535 Thomas Gleixner           2021-06-23  1098  	if (hdr.xfeatures & mask) {
522e92743b3535 Thomas Gleixner           2021-06-23  1099  		u32 mxcsr[2];
522e92743b3535 Thomas Gleixner           2021-06-23  1100  
522e92743b3535 Thomas Gleixner           2021-06-23  1101  		offset = offsetof(struct fxregs_state, mxcsr);
522e92743b3535 Thomas Gleixner           2021-06-23  1102  		if (copy_from_buffer(mxcsr, offset, sizeof(mxcsr), kbuf, ubuf))
522e92743b3535 Thomas Gleixner           2021-06-23  1103  			return -EFAULT;
522e92743b3535 Thomas Gleixner           2021-06-23  1104  
522e92743b3535 Thomas Gleixner           2021-06-23  1105  		/* Reserved bits in MXCSR must be zero. */
522e92743b3535 Thomas Gleixner           2021-06-23  1106  		if (mxcsr[0] & ~mxcsr_feature_mask)
947f4947cf00ea Thomas Gleixner           2021-06-23  1107  			return -EINVAL;
947f4947cf00ea Thomas Gleixner           2021-06-23  1108  
522e92743b3535 Thomas Gleixner           2021-06-23  1109  		/* SSE and YMM require MXCSR even when FP is not in use. */
522e92743b3535 Thomas Gleixner           2021-06-23  1110  		if (!(hdr.xfeatures & XFEATURE_MASK_FP)) {
522e92743b3535 Thomas Gleixner           2021-06-23  1111  			xsave->i387.mxcsr = mxcsr[0];
522e92743b3535 Thomas Gleixner           2021-06-23  1112  			xsave->i387.mxcsr_mask = mxcsr[1];
522e92743b3535 Thomas Gleixner           2021-06-23  1113  		}
522e92743b3535 Thomas Gleixner           2021-06-23  1114  	}
522e92743b3535 Thomas Gleixner           2021-06-23  1115  
79fecc2b7506f2 Ingo Molnar               2017-09-23  1116  	for (i = 0; i < XFEATURE_MAX; i++) {
79fecc2b7506f2 Ingo Molnar               2017-09-23 @1117  		u64 mask = ((u64)1 << i);
79fecc2b7506f2 Ingo Molnar               2017-09-23  1118  
b89eda482d7849 Eric Biggers              2017-09-24  1119  		if (hdr.xfeatures & mask) {
07baeb04f37c95 Sebastian Andrzej Siewior 2019-04-03  1120  			void *dst = __raw_xsave_addr(xsave, i);
79fecc2b7506f2 Ingo Molnar               2017-09-23  1121  
79fecc2b7506f2 Ingo Molnar               2017-09-23  1122  			offset = xstate_offsets[i];
79fecc2b7506f2 Ingo Molnar               2017-09-23  1123  			size = xstate_sizes[i];
79fecc2b7506f2 Ingo Molnar               2017-09-23  1124  
522e92743b3535 Thomas Gleixner           2021-06-23  1125  			if (copy_from_buffer(dst, offset, size, kbuf, ubuf))
522e92743b3535 Thomas Gleixner           2021-06-23  1126  				return -EFAULT;
79fecc2b7506f2 Ingo Molnar               2017-09-23  1127  		}
79fecc2b7506f2 Ingo Molnar               2017-09-23  1128  	}
79fecc2b7506f2 Ingo Molnar               2017-09-23  1129  
79fecc2b7506f2 Ingo Molnar               2017-09-23  1130  	/*
79fecc2b7506f2 Ingo Molnar               2017-09-23  1131  	 * The state that came in from userspace was user-state only.
79fecc2b7506f2 Ingo Molnar               2017-09-23  1132  	 * Mask all the user states out of 'xfeatures':
79fecc2b7506f2 Ingo Molnar               2017-09-23  1133  	 */
8ab22804efefea Fenghua Yu                2020-05-12  1134  	xsave->header.xfeatures &= XFEATURE_MASK_SUPERVISOR_ALL;
79fecc2b7506f2 Ingo Molnar               2017-09-23  1135  
79fecc2b7506f2 Ingo Molnar               2017-09-23  1136  	/*
79fecc2b7506f2 Ingo Molnar               2017-09-23  1137  	 * Add back in the features that came in from userspace:
79fecc2b7506f2 Ingo Molnar               2017-09-23  1138  	 */
b89eda482d7849 Eric Biggers              2017-09-24  1139  	xsave->header.xfeatures |= hdr.xfeatures;
79fecc2b7506f2 Ingo Molnar               2017-09-23  1140  
79fecc2b7506f2 Ingo Molnar               2017-09-23  1141  	return 0;
79fecc2b7506f2 Ingo Molnar               2017-09-23  1142  }
79fecc2b7506f2 Ingo Molnar               2017-09-23  1143  

:::::: The code at line 1117 was first introduced by commit
:::::: 79fecc2b7506f29fb91becc65e8788e5ae7eba9f x86/fpu: Split copy_user_to_xstate() into copy_kernel_to_xstate() & copy_user_to_xstate()

:::::: TO: Ingo Molnar <mingo@...nel.org>
:::::: CC: Ingo Molnar <mingo@...nel.org>

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ