Re: [rcu:test 69/69] arch/x86/include/asm/irqflags.h:41:2: warning: 'flags' may be used uninitialized in this function

From: Paul E. McKenney
Date: Thu May 30 2019 - 13:26:20 EST


On Fri, May 31, 2019 at 12:35:01AM +0800, kbuild test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git test
> head: 685a26bc60076305987bf06cfd1269e5e4094c73
> commit: 685a26bc60076305987bf06cfd1269e5e4094c73 [69/69] rcu/nocb: Avoid ->nocb_lock capture by corresponding CPU
> config: x86_64-randconfig-x009-201921 (attached as .config)
> compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
> reproduce:
> git checkout 685a26bc60076305987bf06cfd1269e5e4094c73
> # save the attached .config to linux build tree
> make ARCH=x86_64
>
> If you fix the issue, kindly add following tag
> Reported-by: kbuild test robot <lkp@xxxxxxxxx>
>
> Note: it may well be a FALSE warning. FWIW you are at least aware of it now.
> http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings

This is a false positive. The return value of rcu_segcblist_is_offloaded()
for a given CPU cannot change post-boot. (Famous last words!)

Thanx, Paul

> All warnings (new ones prefixed by >>):
>
> In file included from include/linux/irqflags.h:16:0,
> from arch/x86/include/asm/processor.h:33,
> from arch/x86/include/asm/cpufeature.h:5,
> from arch/x86/include/asm/thread_info.h:53,
> from include/linux/thread_info.h:38,
> from arch/x86/include/asm/preempt.h:7,
> from include/linux/preempt.h:78,
> from include/linux/spinlock.h:51,
> from kernel/rcu/tree.c:23:
> kernel/rcu/tree_plugin.h: In function 'rcu_nocb_gp_kthread':
> >> arch/x86/include/asm/irqflags.h:41:2: warning: 'flags' may be used uninitialized in this function [-Wmaybe-uninitialized]
> asm volatile("push %0 ; popf"
> ^~~
> In file included from kernel/rcu/tree.c:3519:0:
> kernel/rcu/tree_plugin.h:1719:16: note: 'flags' was declared here
> unsigned long flags;
> ^~~~~
> kernel/rcu/tree_plugin.h: In function 'do_nocb_deferred_wakeup_common':
> kernel/rcu/tree_plugin.h:1891:2: warning: 'flags' may be used uninitialized in this function [-Wmaybe-uninitialized]
> wake_nocb_gp(rdp, ndw == RCU_NOCB_WAKE_FORCE, flags);
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> --
> In file included from include/linux/irqflags.h:16:0,
> from arch/x86/include/asm/processor.h:33,
> from arch/x86/include/asm/cpufeature.h:5,
> from arch/x86/include/asm/thread_info.h:53,
> from include/linux/thread_info.h:38,
> from arch/x86/include/asm/preempt.h:7,
> from include/linux/preempt.h:78,
> from include/linux/spinlock.h:51,
> from kernel//rcu/tree.c:23:
> kernel//rcu/tree_plugin.h: In function 'rcu_nocb_gp_kthread':
> >> arch/x86/include/asm/irqflags.h:41:2: warning: 'flags' may be used uninitialized in this function [-Wmaybe-uninitialized]
> asm volatile("push %0 ; popf"
> ^~~
> In file included from kernel//rcu/tree.c:3519:0:
> kernel//rcu/tree_plugin.h:1719:16: note: 'flags' was declared here
> unsigned long flags;
> ^~~~~
> kernel//rcu/tree_plugin.h: In function 'do_nocb_deferred_wakeup_common':
> kernel//rcu/tree_plugin.h:1891:2: warning: 'flags' may be used uninitialized in this function [-Wmaybe-uninitialized]
> wake_nocb_gp(rdp, ndw == RCU_NOCB_WAKE_FORCE, flags);
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> vim +/flags +41 arch/x86/include/asm/irqflags.h
>
> 6abcd98f include/asm-x86/irqflags.h Glauber de Oliveira Costa 2008-01-30 37
> 1f59a458 arch/x86/include/asm/irqflags.h Nick Desaulniers 2018-08-27 38 extern inline void native_restore_fl(unsigned long flags);
> 1f59a458 arch/x86/include/asm/irqflags.h Nick Desaulniers 2018-08-27 39 extern inline void native_restore_fl(unsigned long flags)
> 6abcd98f include/asm-x86/irqflags.h Glauber de Oliveira Costa 2008-01-30 40 {
> cf7f7191 include/asm-x86/irqflags.h Joe Perches 2008-03-23 @41 asm volatile("push %0 ; popf"
> 6abcd98f include/asm-x86/irqflags.h Glauber de Oliveira Costa 2008-01-30 42 : /* no output */
> 6abcd98f include/asm-x86/irqflags.h Glauber de Oliveira Costa 2008-01-30 43 :"g" (flags)
> cf7f7191 include/asm-x86/irqflags.h Joe Perches 2008-03-23 44 :"memory", "cc");
> 6abcd98f include/asm-x86/irqflags.h Glauber de Oliveira Costa 2008-01-30 45 }
> 6abcd98f include/asm-x86/irqflags.h Glauber de Oliveira Costa 2008-01-30 46
>
> :::::: The code at line 41 was first introduced by commit
> :::::: cf7f7191cf20011e47243b594e433275a6db811b include/asm-x86/irqflags.h: checkpatch cleanups - formatting only
>
> :::::: TO: Joe Perches <joe@xxxxxxxxxxx>
> :::::: CC: Ingo Molnar <mingo@xxxxxxx>
>
> ---
> 0-DAY kernel test infrastructure Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all Intel Corporation