All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christophe Leroy <christophe.leroy@csgroup.eu>
To: kernel test robot <lkp@intel.com>
Cc: clang-built-linux@googlegroups.com, kbuild-all@lists.01.org,
	linux-kernel@vger.kernel.org,
	Michael Ellerman <mpe@ellerman.id.au>
Subject: Re: arch/powerpc/kernel/signal_32.c:297:2: warning: Value stored to 'msr' is never read [clang-analyzer-deadcode.DeadStores]
Date: Mon, 23 Aug 2021 16:35:18 +0200	[thread overview]
Message-ID: <3db8de6e-a971-be9f-19eb-e7d95faf2870@csgroup.eu> (raw)
In-Reply-To: <202108231827.N9VUIKbD-lkp@intel.com>



Le 23/08/2021 à 12:59, kernel test robot a écrit :
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head:   e22ce8eb631bdc47a4a4ea7ecf4e4ba499db4f93
> commit: ef75e73182949a94bde169a774de1b62ae21fbbc powerpc/signal32: Transform save_user_regs() and save_tm_user_regs() in 'unsafe' version
> date:   9 months ago
> config: powerpc-randconfig-c003-20210821 (attached as .config)
> compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project d9c5613e856cf2addfbf892fc4c1ce9ef9feceaa)
> reproduce (this is a W=1 build):
>          wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>          chmod +x ~/bin/make.cross
>          # install powerpc cross compiling tool for clang build
>          # apt-get install binutils-powerpc-linux-gnu
>          # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ef75e73182949a94bde169a774de1b62ae21fbbc
>          git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
>          git fetch --no-tags linus master
>          git checkout ef75e73182949a94bde169a774de1b62ae21fbbc
>          # save the attached .config to linux build tree
>          COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc clang-analyzer
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
> 
> 
> clang-analyzer warnings: (new ones prefixed by >>)
>             ^
>>> arch/powerpc/kernel/signal_32.c:297:2: warning: Value stored to 'msr' is never read [clang-analyzer-deadcode.DeadStores]
>             msr &= ~MSR_VSX;
>             ^      ~~~~~~~~
>     arch/powerpc/kernel/signal_32.c:297:2: note: Value stored to 'msr' is never read
>             msr &= ~MSR_VSX;
>             ^      ~~~~~~~~


This is wrong.

msr is used at line 326:

ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  326 
unsafe_put_user(msr, &frame->mc_gregs[PT_MSR], failed);





>     arch/powerpc/kernel/signal_32.c:765:16: warning: Value stored to 'msr' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
>             unsigned long msr = regs->msr;
>                           ^~~   ~~~~~~~~~
>     arch/powerpc/kernel/signal_32.c:765:16: note: Value stored to 'msr' during its initialization is never read
>             unsigned long msr = regs->msr;
>                           ^~~   ~~~~~~~~~
>     arch/powerpc/kernel/signal_32.c:869:16: warning: Value stored to 'msr' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
>             unsigned long msr = regs->msr;
>                           ^~~   ~~~~~~~~~
>     arch/powerpc/kernel/signal_32.c:869:16: note: Value stored to 'msr' during its initialization is never read
>             unsigned long msr = regs->msr;
>                           ^~~   ~~~~~~~~~
> 
> vim +/msr +297 arch/powerpc/kernel/signal_32.c
> 
> 968c4fccd1bb8b arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  262
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  263  static int save_user_regs_unsafe(struct pt_regs *regs, struct mcontext __user *frame,
> 8d33001dd650b8 arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  264  				 struct mcontext __user *tm_frame, int ctx_has_vsx_region)
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  265  {
> 9e7511861c4f8d arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  266  	unsigned long msr = regs->msr;
> 9e7511861c4f8d arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  267
> c6e6771b87d4e3 arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  268  	/* save general registers */
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  269  	unsafe_save_general_regs(regs, frame, failed);
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  270
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  271  #ifdef CONFIG_ALTIVEC
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  272  	/* save altivec registers */
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  273  	if (current->thread.used_vr) {
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  274  		unsafe_copy_to_user(&frame->mc_vregs, &current->thread.vr_state,
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  275  				    ELF_NVRREG * sizeof(vector128), failed);
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  276  		/* set MSR_VEC in the saved MSR value to indicate that
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  277  		   frame->mc_vregs contains valid data */
> 9e7511861c4f8d arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  278  		msr |= MSR_VEC;
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  279  	}
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  280  	/* else assert((regs->msr & MSR_VEC) == 0) */
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  281
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  282  	/* We always copy to/from vrsave, it's 0 if we don't have or don't
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  283  	 * use altivec. Since VSCR only contains 32 bits saved in the least
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  284  	 * significant bits of a vector, we "cheat" and stuff VRSAVE in the
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  285  	 * most significant bits of that same vector. --BenH
> 408a7e08b2112f arch/powerpc/kernel/signal_32.c Paul Mackerras   2013-08-05  286  	 * Note that the current VRSAVE value is in the SPR at this point.
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  287  	 */
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  288  	unsafe_put_user(current->thread.vrsave, (u32 __user *)&frame->mc_vregs[32],
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  289  			failed);
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  290  #endif /* CONFIG_ALTIVEC */
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  291  	unsafe_copy_fpr_to_user(&frame->mc_fregs, current, failed);
> ec67ad82814bee arch/powerpc/kernel/signal_32.c Michael Neuling  2013-11-25  292
> ec67ad82814bee arch/powerpc/kernel/signal_32.c Michael Neuling  2013-11-25  293  	/*
> ec67ad82814bee arch/powerpc/kernel/signal_32.c Michael Neuling  2013-11-25  294  	 * Clear the MSR VSX bit to indicate there is no valid state attached
> ec67ad82814bee arch/powerpc/kernel/signal_32.c Michael Neuling  2013-11-25  295  	 * to this context, except in the specific case below where we set it.
> ec67ad82814bee arch/powerpc/kernel/signal_32.c Michael Neuling  2013-11-25  296  	 */
> ec67ad82814bee arch/powerpc/kernel/signal_32.c Michael Neuling  2013-11-25 @297  	msr &= ~MSR_VSX;
> 6a274c08f2f4df arch/powerpc/kernel/signal_32.c Michael Neuling  2008-07-02  298  #ifdef CONFIG_VSX
> ce48b2100785e5 arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  299  	/*
> ce48b2100785e5 arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  300  	 * Copy VSR 0-31 upper half from thread_struct to local
> ce48b2100785e5 arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  301  	 * buffer, then write that to userspace.  Also set MSR_VSX in
> ce48b2100785e5 arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  302  	 * the saved MSR value to indicate that frame->mc_vregs
> ce48b2100785e5 arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  303  	 * contains valid data
> ce48b2100785e5 arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  304  	 */
> 16c29d180becc5 arch/powerpc/kernel/signal_32.c Michael Neuling  2008-10-23  305  	if (current->thread.used_vsr && ctx_has_vsx_region) {
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  306  		unsafe_copy_vsx_to_user(&frame->mc_vsregs, current, failed);
> ce48b2100785e5 arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  307  		msr |= MSR_VSX;
> ec67ad82814bee arch/powerpc/kernel/signal_32.c Michael Neuling  2013-11-25  308  	}
> c6e6771b87d4e3 arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  309  #endif /* CONFIG_VSX */
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  310  #ifdef CONFIG_SPE
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  311  	/* save spe registers */
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  312  	if (current->thread.used_spe) {
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  313  		unsafe_copy_to_user(&frame->mc_vregs, current->thread.evr,
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  314  				    ELF_NEVRREG * sizeof(u32), failed);
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  315  		/* set MSR_SPE in the saved MSR value to indicate that
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  316  		   frame->mc_vregs contains valid data */
> 9e7511861c4f8d arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  317  		msr |= MSR_SPE;
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  318  	}
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  319  	/* else assert((regs->msr & MSR_SPE) == 0) */
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  320
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  321  	/* We always copy to/from spefscr */
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  322  	unsafe_put_user(current->thread.spefscr,
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  323  			(u32 __user *)&frame->mc_vregs + ELF_NEVRREG, failed);
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  324  #endif /* CONFIG_SPE */
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  325
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  326  	unsafe_put_user(msr, &frame->mc_gregs[PT_MSR], failed);
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  327
> 1d25f11fdbcc53 arch/powerpc/kernel/signal_32.c Michael Neuling  2013-06-09  328  	/* We need to write 0 the MSR top 32 bits in the tm frame so that we
> 1d25f11fdbcc53 arch/powerpc/kernel/signal_32.c Michael Neuling  2013-06-09  329  	 * can check it on the restore to see if TM is active
> 1d25f11fdbcc53 arch/powerpc/kernel/signal_32.c Michael Neuling  2013-06-09  330  	 */
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  331  	if (tm_frame)
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  332  		unsafe_put_user(0, &tm_frame->mc_gregs[PT_MSR], failed);
> 1d25f11fdbcc53 arch/powerpc/kernel/signal_32.c Michael Neuling  2013-06-09  333
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  334  	return 0;
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  335
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  336  failed:
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  337  	return 1;
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  338  }
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  339
> 
> :::::: The code at line 297 was first introduced by commit
> :::::: ec67ad82814bee92251fd963bf01c7a173856555 powerpc/signals: Improved mark VSX not saved with small contexts fix
> 
> :::::: TO: Michael Neuling <mikey@neuling.org>
> :::::: CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> 
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
> 

WARNING: multiple messages have this Message-ID (diff)
From: Christophe Leroy <christophe.leroy@csgroup.eu>
To: kbuild-all@lists.01.org
Subject: Re: arch/powerpc/kernel/signal_32.c:297:2: warning: Value stored to 'msr' is never read [clang-analyzer-deadcode.DeadStores]
Date: Mon, 23 Aug 2021 16:35:18 +0200	[thread overview]
Message-ID: <3db8de6e-a971-be9f-19eb-e7d95faf2870@csgroup.eu> (raw)
In-Reply-To: <202108231827.N9VUIKbD-lkp@intel.com>

[-- Attachment #1: Type: text/plain, Size: 12534 bytes --]



Le 23/08/2021 à 12:59, kernel test robot a écrit :
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head:   e22ce8eb631bdc47a4a4ea7ecf4e4ba499db4f93
> commit: ef75e73182949a94bde169a774de1b62ae21fbbc powerpc/signal32: Transform save_user_regs() and save_tm_user_regs() in 'unsafe' version
> date:   9 months ago
> config: powerpc-randconfig-c003-20210821 (attached as .config)
> compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project d9c5613e856cf2addfbf892fc4c1ce9ef9feceaa)
> reproduce (this is a W=1 build):
>          wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>          chmod +x ~/bin/make.cross
>          # install powerpc cross compiling tool for clang build
>          # apt-get install binutils-powerpc-linux-gnu
>          # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ef75e73182949a94bde169a774de1b62ae21fbbc
>          git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
>          git fetch --no-tags linus master
>          git checkout ef75e73182949a94bde169a774de1b62ae21fbbc
>          # save the attached .config to linux build tree
>          COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc clang-analyzer
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
> 
> 
> clang-analyzer warnings: (new ones prefixed by >>)
>             ^
>>> arch/powerpc/kernel/signal_32.c:297:2: warning: Value stored to 'msr' is never read [clang-analyzer-deadcode.DeadStores]
>             msr &= ~MSR_VSX;
>             ^      ~~~~~~~~
>     arch/powerpc/kernel/signal_32.c:297:2: note: Value stored to 'msr' is never read
>             msr &= ~MSR_VSX;
>             ^      ~~~~~~~~


This is wrong.

msr is used at line 326:

ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  326 
unsafe_put_user(msr, &frame->mc_gregs[PT_MSR], failed);





>     arch/powerpc/kernel/signal_32.c:765:16: warning: Value stored to 'msr' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
>             unsigned long msr = regs->msr;
>                           ^~~   ~~~~~~~~~
>     arch/powerpc/kernel/signal_32.c:765:16: note: Value stored to 'msr' during its initialization is never read
>             unsigned long msr = regs->msr;
>                           ^~~   ~~~~~~~~~
>     arch/powerpc/kernel/signal_32.c:869:16: warning: Value stored to 'msr' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
>             unsigned long msr = regs->msr;
>                           ^~~   ~~~~~~~~~
>     arch/powerpc/kernel/signal_32.c:869:16: note: Value stored to 'msr' during its initialization is never read
>             unsigned long msr = regs->msr;
>                           ^~~   ~~~~~~~~~
> 
> vim +/msr +297 arch/powerpc/kernel/signal_32.c
> 
> 968c4fccd1bb8b arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  262
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  263  static int save_user_regs_unsafe(struct pt_regs *regs, struct mcontext __user *frame,
> 8d33001dd650b8 arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  264  				 struct mcontext __user *tm_frame, int ctx_has_vsx_region)
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  265  {
> 9e7511861c4f8d arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  266  	unsigned long msr = regs->msr;
> 9e7511861c4f8d arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  267
> c6e6771b87d4e3 arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  268  	/* save general registers */
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  269  	unsafe_save_general_regs(regs, frame, failed);
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  270
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  271  #ifdef CONFIG_ALTIVEC
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  272  	/* save altivec registers */
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  273  	if (current->thread.used_vr) {
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  274  		unsafe_copy_to_user(&frame->mc_vregs, &current->thread.vr_state,
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  275  				    ELF_NVRREG * sizeof(vector128), failed);
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  276  		/* set MSR_VEC in the saved MSR value to indicate that
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  277  		   frame->mc_vregs contains valid data */
> 9e7511861c4f8d arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  278  		msr |= MSR_VEC;
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  279  	}
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  280  	/* else assert((regs->msr & MSR_VEC) == 0) */
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  281
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  282  	/* We always copy to/from vrsave, it's 0 if we don't have or don't
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  283  	 * use altivec. Since VSCR only contains 32 bits saved in the least
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  284  	 * significant bits of a vector, we "cheat" and stuff VRSAVE in the
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  285  	 * most significant bits of that same vector. --BenH
> 408a7e08b2112f arch/powerpc/kernel/signal_32.c Paul Mackerras   2013-08-05  286  	 * Note that the current VRSAVE value is in the SPR at this point.
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  287  	 */
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  288  	unsafe_put_user(current->thread.vrsave, (u32 __user *)&frame->mc_vregs[32],
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  289  			failed);
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  290  #endif /* CONFIG_ALTIVEC */
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  291  	unsafe_copy_fpr_to_user(&frame->mc_fregs, current, failed);
> ec67ad82814bee arch/powerpc/kernel/signal_32.c Michael Neuling  2013-11-25  292
> ec67ad82814bee arch/powerpc/kernel/signal_32.c Michael Neuling  2013-11-25  293  	/*
> ec67ad82814bee arch/powerpc/kernel/signal_32.c Michael Neuling  2013-11-25  294  	 * Clear the MSR VSX bit to indicate there is no valid state attached
> ec67ad82814bee arch/powerpc/kernel/signal_32.c Michael Neuling  2013-11-25  295  	 * to this context, except in the specific case below where we set it.
> ec67ad82814bee arch/powerpc/kernel/signal_32.c Michael Neuling  2013-11-25  296  	 */
> ec67ad82814bee arch/powerpc/kernel/signal_32.c Michael Neuling  2013-11-25 @297  	msr &= ~MSR_VSX;
> 6a274c08f2f4df arch/powerpc/kernel/signal_32.c Michael Neuling  2008-07-02  298  #ifdef CONFIG_VSX
> ce48b2100785e5 arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  299  	/*
> ce48b2100785e5 arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  300  	 * Copy VSR 0-31 upper half from thread_struct to local
> ce48b2100785e5 arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  301  	 * buffer, then write that to userspace.  Also set MSR_VSX in
> ce48b2100785e5 arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  302  	 * the saved MSR value to indicate that frame->mc_vregs
> ce48b2100785e5 arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  303  	 * contains valid data
> ce48b2100785e5 arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  304  	 */
> 16c29d180becc5 arch/powerpc/kernel/signal_32.c Michael Neuling  2008-10-23  305  	if (current->thread.used_vsr && ctx_has_vsx_region) {
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  306  		unsafe_copy_vsx_to_user(&frame->mc_vsregs, current, failed);
> ce48b2100785e5 arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  307  		msr |= MSR_VSX;
> ec67ad82814bee arch/powerpc/kernel/signal_32.c Michael Neuling  2013-11-25  308  	}
> c6e6771b87d4e3 arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  309  #endif /* CONFIG_VSX */
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  310  #ifdef CONFIG_SPE
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  311  	/* save spe registers */
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  312  	if (current->thread.used_spe) {
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  313  		unsafe_copy_to_user(&frame->mc_vregs, current->thread.evr,
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  314  				    ELF_NEVRREG * sizeof(u32), failed);
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  315  		/* set MSR_SPE in the saved MSR value to indicate that
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  316  		   frame->mc_vregs contains valid data */
> 9e7511861c4f8d arch/powerpc/kernel/signal_32.c Michael Neuling  2008-06-25  317  		msr |= MSR_SPE;
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  318  	}
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  319  	/* else assert((regs->msr & MSR_SPE) == 0) */
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  320
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  321  	/* We always copy to/from spefscr */
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  322  	unsafe_put_user(current->thread.spefscr,
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  323  			(u32 __user *)&frame->mc_vregs + ELF_NEVRREG, failed);
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  324  #endif /* CONFIG_SPE */
> 81e7009ea46c95 arch/powerpc/kernel/signal_32.c Stephen Rothwell 2005-10-18  325
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  326  	unsafe_put_user(msr, &frame->mc_gregs[PT_MSR], failed);
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  327
> 1d25f11fdbcc53 arch/powerpc/kernel/signal_32.c Michael Neuling  2013-06-09  328  	/* We need to write 0 the MSR top 32 bits in the tm frame so that we
> 1d25f11fdbcc53 arch/powerpc/kernel/signal_32.c Michael Neuling  2013-06-09  329  	 * can check it on the restore to see if TM is active
> 1d25f11fdbcc53 arch/powerpc/kernel/signal_32.c Michael Neuling  2013-06-09  330  	 */
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  331  	if (tm_frame)
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  332  		unsafe_put_user(0, &tm_frame->mc_gregs[PT_MSR], failed);
> 1d25f11fdbcc53 arch/powerpc/kernel/signal_32.c Michael Neuling  2013-06-09  333
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  334  	return 0;
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  335
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  336  failed:
> ef75e73182949a arch/powerpc/kernel/signal_32.c Christophe Leroy 2020-08-18  337  	return 1;
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  338  }
> ^1da177e4c3f41 arch/ppc64/kernel/signal32.c    Linus Torvalds   2005-04-16  339
> 
> :::::: The code at line 297 was first introduced by commit
> :::::: ec67ad82814bee92251fd963bf01c7a173856555 powerpc/signals: Improved mark VSX not saved with small contexts fix
> 
> :::::: TO: Michael Neuling <mikey@neuling.org>
> :::::: CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> 
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
> 

  reply	other threads:[~2021-08-23 14:35 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-23 10:59 arch/powerpc/kernel/signal_32.c:297:2: warning: Value stored to 'msr' is never read [clang-analyzer-deadcode.DeadStores] kernel test robot
2021-08-23 10:59 ` kernel test robot
2021-08-23 14:35 ` Christophe Leroy [this message]
2021-08-23 14:35   ` Christophe Leroy
2021-08-24  6:59   ` [kbuild-all] " Chen, Rong A
2021-08-24  6:59     ` Chen, Rong A
2021-08-24  7:29     ` [kbuild-all] " Christophe Leroy
2021-08-24  7:29       ` Christophe Leroy
2021-08-25  8:48       ` [kbuild-all] " Rong Chen
2021-08-25  8:48         ` Rong Chen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3db8de6e-a971-be9f-19eb-e7d95faf2870@csgroup.eu \
    --to=christophe.leroy@csgroup.eu \
    --cc=clang-built-linux@googlegroups.com \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=mpe@ellerman.id.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.