All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marc Zyngier <maz@kernel.org>
To: kernel test robot <lkp@intel.com>
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
	linux-arm-kernel@lists.infradead.org,
	Oliver Upton <oupton@google.com>,
	Mark Rutland <mark.rutland@arm.com>
Subject: Re: [arm-platforms:timers/tval-ectomy 2/17] drivers/clocksource/arm_arch_timer.c:156:3: warning: variable 'val' is used uninitialized whenever switch default is taken
Date: Sun, 10 Oct 2021 10:37:00 +0100	[thread overview]
Message-ID: <d6e8064803598970b463da0e9bab116b@kernel.org> (raw)
In-Reply-To: <202110100514.3h9CI4s0-lkp@intel.com>

On 2021-10-09 22:12, kernel test robot wrote:
> tree:
> https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git
> timers/tval-ectomy
> head:   c815d60a6292c90ea228c635b4150f022322908b
> commit: 9c6e4aa680ebd5ad816fc8f97858ec6057362c9e [2/17]
> clocksource/arm_arch_timer: Drop CNT*_TVAL read accessors
> config: arm64-randconfig-r026-20211010 (attached as .config)
> compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project
> 30caca39f401ae17927439c0a0bd6d1b1916dd6a)
> 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 arm64 cross compiling tool for clang build
>         # apt-get install binutils-aarch64-linux-gnu
>         #
> https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git/commit/?id=9c6e4aa680ebd5ad816fc8f97858ec6057362c9e
>         git remote add arm-platforms
> https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git
>         git fetch --no-tags arm-platforms timers/tval-ectomy
>         git checkout 9c6e4aa680ebd5ad816fc8f97858ec6057362c9e
>         # save the attached .config to linux build tree
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1
> ARCH=arm64
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>

This is *not* an issue, see below.

> 
> All warnings (new ones prefixed by >>):
> 
>>> drivers/clocksource/arm_arch_timer.c:156:3: warning: variable 'val' 
>>> is used uninitialized whenever switch default is taken 
>>> [-Wsometimes-uninitialized]
>                    default:
>                    ^~~~~~~
>    drivers/clocksource/arm_arch_timer.c:163:9: note: uninitialized use
> occurs here
>            return val;
>                   ^~~
>    drivers/clocksource/arm_arch_timer.c:147:3: warning: variable 'val'
> is used uninitialized whenever switch default is taken
> [-Wsometimes-uninitialized]
>                    default:
>                    ^~~~~~~
>    drivers/clocksource/arm_arch_timer.c:163:9: note: uninitialized use
> occurs here
>            return val;
>                   ^~~
>    drivers/clocksource/arm_arch_timer.c:139:9: note: initialize the
> variable 'val' to silence this warning
>            u32 val;
>                   ^
>                    = 0
>    2 warnings generated.
> 
> 
> vim +/val +156 drivers/clocksource/arm_arch_timer.c
> 
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  134
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  135  static __always_inline
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  136  u32
> arch_timer_reg_read(int access, enum arch_timer_reg reg,
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  137  			struct 
> clock_event_device *clk)
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  138  {
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  139  	u32 val;
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  140
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  141  	if (access ==
> ARCH_TIMER_MEM_PHYS_ACCESS) {
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  142  		struct arch_timer
> *timer = to_arch_timer(clk);
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  143  		switch (reg) {
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  144  		case 
> ARCH_TIMER_REG_CTRL:
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  145  			val =
> readl_relaxed(timer->base + CNTP_CTL);
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  146  			break;
> 0bc2c9327c236c Marc Zyngier 2021-09-20  147  		default:
> 0bc2c9327c236c Marc Zyngier 2021-09-20  148  			BUILD_BUG();
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  149  		}
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  150  	} else if (access ==
> ARCH_TIMER_MEM_VIRT_ACCESS) {
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  151  		struct arch_timer
> *timer = to_arch_timer(clk);
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  152  		switch (reg) {
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  153  		case 
> ARCH_TIMER_REG_CTRL:
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  154  			val =
> readl_relaxed(timer->base + CNTV_CTL);
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  155  			break;
> 0bc2c9327c236c Marc Zyngier 2021-09-20 @156  		default:
> 0bc2c9327c236c Marc Zyngier 2021-09-20  157  			BUILD_BUG();

If you hit this case, which results in a compilation failure...

> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  158  		}
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  159  	} else {
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  160  		val =
> arch_timer_reg_read_cp15(access, reg);
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  161  	}
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  162
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  163  	return val;

... how can you return anything the first place?

> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  164  }
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  165

I think the problem squarely lies with the compiler (or the
way it interprets the BUILD_BUG helper). If it cannot see that
BUILD_BUG() trumps the control flow analysis, then this warning
is totally useless.

         M.
-- 
Jazz is not dead. It just smells funny...

WARNING: multiple messages have this Message-ID (diff)
From: Marc Zyngier <maz@kernel.org>
To: kernel test robot <lkp@intel.com>
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
	linux-arm-kernel@lists.infradead.org,
	Oliver Upton <oupton@google.com>,
	Mark Rutland <mark.rutland@arm.com>
Subject: Re: [arm-platforms:timers/tval-ectomy 2/17] drivers/clocksource/arm_arch_timer.c:156:3: warning: variable 'val' is used uninitialized whenever switch default is taken
Date: Sun, 10 Oct 2021 10:37:00 +0100	[thread overview]
Message-ID: <d6e8064803598970b463da0e9bab116b@kernel.org> (raw)
In-Reply-To: <202110100514.3h9CI4s0-lkp@intel.com>

On 2021-10-09 22:12, kernel test robot wrote:
> tree:
> https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git
> timers/tval-ectomy
> head:   c815d60a6292c90ea228c635b4150f022322908b
> commit: 9c6e4aa680ebd5ad816fc8f97858ec6057362c9e [2/17]
> clocksource/arm_arch_timer: Drop CNT*_TVAL read accessors
> config: arm64-randconfig-r026-20211010 (attached as .config)
> compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project
> 30caca39f401ae17927439c0a0bd6d1b1916dd6a)
> 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 arm64 cross compiling tool for clang build
>         # apt-get install binutils-aarch64-linux-gnu
>         #
> https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git/commit/?id=9c6e4aa680ebd5ad816fc8f97858ec6057362c9e
>         git remote add arm-platforms
> https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git
>         git fetch --no-tags arm-platforms timers/tval-ectomy
>         git checkout 9c6e4aa680ebd5ad816fc8f97858ec6057362c9e
>         # save the attached .config to linux build tree
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1
> ARCH=arm64
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>

This is *not* an issue, see below.

> 
> All warnings (new ones prefixed by >>):
> 
>>> drivers/clocksource/arm_arch_timer.c:156:3: warning: variable 'val' 
>>> is used uninitialized whenever switch default is taken 
>>> [-Wsometimes-uninitialized]
>                    default:
>                    ^~~~~~~
>    drivers/clocksource/arm_arch_timer.c:163:9: note: uninitialized use
> occurs here
>            return val;
>                   ^~~
>    drivers/clocksource/arm_arch_timer.c:147:3: warning: variable 'val'
> is used uninitialized whenever switch default is taken
> [-Wsometimes-uninitialized]
>                    default:
>                    ^~~~~~~
>    drivers/clocksource/arm_arch_timer.c:163:9: note: uninitialized use
> occurs here
>            return val;
>                   ^~~
>    drivers/clocksource/arm_arch_timer.c:139:9: note: initialize the
> variable 'val' to silence this warning
>            u32 val;
>                   ^
>                    = 0
>    2 warnings generated.
> 
> 
> vim +/val +156 drivers/clocksource/arm_arch_timer.c
> 
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  134
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  135  static __always_inline
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  136  u32
> arch_timer_reg_read(int access, enum arch_timer_reg reg,
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  137  			struct 
> clock_event_device *clk)
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  138  {
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  139  	u32 val;
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  140
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  141  	if (access ==
> ARCH_TIMER_MEM_PHYS_ACCESS) {
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  142  		struct arch_timer
> *timer = to_arch_timer(clk);
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  143  		switch (reg) {
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  144  		case 
> ARCH_TIMER_REG_CTRL:
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  145  			val =
> readl_relaxed(timer->base + CNTP_CTL);
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  146  			break;
> 0bc2c9327c236c Marc Zyngier 2021-09-20  147  		default:
> 0bc2c9327c236c Marc Zyngier 2021-09-20  148  			BUILD_BUG();
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  149  		}
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  150  	} else if (access ==
> ARCH_TIMER_MEM_VIRT_ACCESS) {
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  151  		struct arch_timer
> *timer = to_arch_timer(clk);
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  152  		switch (reg) {
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  153  		case 
> ARCH_TIMER_REG_CTRL:
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  154  			val =
> readl_relaxed(timer->base + CNTV_CTL);
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  155  			break;
> 0bc2c9327c236c Marc Zyngier 2021-09-20 @156  		default:
> 0bc2c9327c236c Marc Zyngier 2021-09-20  157  			BUILD_BUG();

If you hit this case, which results in a compilation failure...

> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  158  		}
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  159  	} else {
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  160  		val =
> arch_timer_reg_read_cp15(access, reg);
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  161  	}
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  162
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  163  	return val;

... how can you return anything the first place?

> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  164  }
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  165

I think the problem squarely lies with the compiler (or the
way it interprets the BUILD_BUG helper). If it cannot see that
BUILD_BUG() trumps the control flow analysis, then this warning
is totally useless.

         M.
-- 
Jazz is not dead. It just smells funny...

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Marc Zyngier <maz@kernel.org>
To: kbuild-all@lists.01.org
Subject: Re: [arm-platforms:timers/tval-ectomy 2/17] drivers/clocksource/arm_arch_timer.c:156:3: warning: variable 'val' is used uninitialized whenever switch default is taken
Date: Sun, 10 Oct 2021 10:37:00 +0100	[thread overview]
Message-ID: <d6e8064803598970b463da0e9bab116b@kernel.org> (raw)
In-Reply-To: <202110100514.3h9CI4s0-lkp@intel.com>

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

On 2021-10-09 22:12, kernel test robot wrote:
> tree:
> https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git
> timers/tval-ectomy
> head:   c815d60a6292c90ea228c635b4150f022322908b
> commit: 9c6e4aa680ebd5ad816fc8f97858ec6057362c9e [2/17]
> clocksource/arm_arch_timer: Drop CNT*_TVAL read accessors
> config: arm64-randconfig-r026-20211010 (attached as .config)
> compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project
> 30caca39f401ae17927439c0a0bd6d1b1916dd6a)
> 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 arm64 cross compiling tool for clang build
>         # apt-get install binutils-aarch64-linux-gnu
>         #
> https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git/commit/?id=9c6e4aa680ebd5ad816fc8f97858ec6057362c9e
>         git remote add arm-platforms
> https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git
>         git fetch --no-tags arm-platforms timers/tval-ectomy
>         git checkout 9c6e4aa680ebd5ad816fc8f97858ec6057362c9e
>         # save the attached .config to linux build tree
>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1
> ARCH=arm64
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>

This is *not* an issue, see below.

> 
> All warnings (new ones prefixed by >>):
> 
>>> drivers/clocksource/arm_arch_timer.c:156:3: warning: variable 'val' 
>>> is used uninitialized whenever switch default is taken 
>>> [-Wsometimes-uninitialized]
>                    default:
>                    ^~~~~~~
>    drivers/clocksource/arm_arch_timer.c:163:9: note: uninitialized use
> occurs here
>            return val;
>                   ^~~
>    drivers/clocksource/arm_arch_timer.c:147:3: warning: variable 'val'
> is used uninitialized whenever switch default is taken
> [-Wsometimes-uninitialized]
>                    default:
>                    ^~~~~~~
>    drivers/clocksource/arm_arch_timer.c:163:9: note: uninitialized use
> occurs here
>            return val;
>                   ^~~
>    drivers/clocksource/arm_arch_timer.c:139:9: note: initialize the
> variable 'val' to silence this warning
>            u32 val;
>                   ^
>                    = 0
>    2 warnings generated.
> 
> 
> vim +/val +156 drivers/clocksource/arm_arch_timer.c
> 
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  134
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  135  static __always_inline
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  136  u32
> arch_timer_reg_read(int access, enum arch_timer_reg reg,
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  137  			struct 
> clock_event_device *clk)
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  138  {
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  139  	u32 val;
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  140
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  141  	if (access ==
> ARCH_TIMER_MEM_PHYS_ACCESS) {
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  142  		struct arch_timer
> *timer = to_arch_timer(clk);
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  143  		switch (reg) {
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  144  		case 
> ARCH_TIMER_REG_CTRL:
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  145  			val =
> readl_relaxed(timer->base + CNTP_CTL);
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  146  			break;
> 0bc2c9327c236c Marc Zyngier 2021-09-20  147  		default:
> 0bc2c9327c236c Marc Zyngier 2021-09-20  148  			BUILD_BUG();
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  149  		}
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  150  	} else if (access ==
> ARCH_TIMER_MEM_VIRT_ACCESS) {
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  151  		struct arch_timer
> *timer = to_arch_timer(clk);
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  152  		switch (reg) {
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  153  		case 
> ARCH_TIMER_REG_CTRL:
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  154  			val =
> readl_relaxed(timer->base + CNTV_CTL);
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  155  			break;
> 0bc2c9327c236c Marc Zyngier 2021-09-20 @156  		default:
> 0bc2c9327c236c Marc Zyngier 2021-09-20  157  			BUILD_BUG();

If you hit this case, which results in a compilation failure...

> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  158  		}
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  159  	} else {
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  160  		val =
> arch_timer_reg_read_cp15(access, reg);
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  161  	}
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  162
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  163  	return val;

... how can you return anything the first place?

> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  164  }
> f4e00a1a55c7f9 Marc Zyngier 2017-01-20  165

I think the problem squarely lies with the compiler (or the
way it interprets the BUILD_BUG helper). If it cannot see that
BUILD_BUG() trumps the control flow analysis, then this warning
is totally useless.

         M.
-- 
Jazz is not dead. It just smells funny...

  reply	other threads:[~2021-10-10  9:37 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-09 21:12 [arm-platforms:timers/tval-ectomy 2/17] drivers/clocksource/arm_arch_timer.c:156:3: warning: variable 'val' is used uninitialized whenever switch default is taken kernel test robot
2021-10-09 21:12 ` kernel test robot
2021-10-09 21:12 ` kernel test robot
2021-10-10  9:37 ` Marc Zyngier [this message]
2021-10-10  9:37   ` Marc Zyngier
2021-10-10  9:37   ` Marc Zyngier
2021-10-10 10:54   ` Miguel Ojeda
2021-10-10 10:54     ` Miguel Ojeda
2021-10-10 10:54     ` Miguel Ojeda
2021-10-11 20:18     ` Nick Desaulniers
2021-10-11 20:18       ` Nick Desaulniers
2021-10-11 20:18       ` Nick Desaulniers
2021-10-14 13:27       ` Miguel Ojeda
2021-10-14 13:27         ` Miguel Ojeda
2021-10-14 13:27         ` Miguel Ojeda
  -- strict thread matches above, loose matches on Subject: below --
2021-11-07  2:10 kernel test robot
2021-11-07  2:10 ` kernel test robot
2021-11-07  2:10 ` kernel test robot

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=d6e8064803598970b463da0e9bab116b@kernel.org \
    --to=maz@kernel.org \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=lkp@intel.com \
    --cc=llvm@lists.linux.dev \
    --cc=mark.rutland@arm.com \
    --cc=oupton@google.com \
    /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.