2019-10-21 23:26:42

by Stephen Rothwell

[permalink] [raw]
Subject: linux-next: build warning after merge of the thermal tree

Hi all,

After merging the thermal tree, today's linux-next build (x86_64
allmodconfig) produced this warning:

In file included from drivers/thermal/qcom/tsens-common.c:13:
drivers/thermal/qcom/tsens-common.c: In function 'tsens_set_interrupt':
include/linux/regmap.h:87:2: warning: 'index' may be used uninitialized in this function [-Wmaybe-uninitialized]
87 | regmap_field_update_bits_base(field, ~0, val, NULL, false, false)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/thermal/qcom/tsens-common.c:183:6: note: 'index' was declared here
183 | u32 index;
| ^~~~~
In file included from drivers/thermal/qcom/tsens-common.c:13:
include/linux/regmap.h:87:2: warning: 'index_clear' may be used uninitialized in this function [-Wmaybe-uninitialized]
87 | regmap_field_update_bits_base(field, ~0, val, NULL, false, false)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/thermal/qcom/tsens-common.c:199:18: note: 'index_clear' was declared here
199 | u32 index_mask, index_clear;
| ^~~~~~~~~~~
drivers/thermal/qcom/tsens-common.c:199:6: warning: 'index_mask' may be used uninitialized in this function [-Wmaybe-uninitialized]
199 | u32 index_mask, index_clear;
| ^~~~~~~~~~

Introduced by commit

fbfe1a042cfd ("drivers: thermal: tsens: Add interrupt support")

--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

2019-10-22 12:58:09

by Amit Kucheria

[permalink] [raw]
Subject: Re: linux-next: build warning after merge of the thermal tree

(Resending since Gmail mobile client converts email to HTML)

Hi Stephen,

On Tue, Oct 22, 2019 at 4:53 AM Stephen Rothwell <[email protected]> wrote:
>
> Hi all,
>
> After merging the thermal tree, today's linux-next build (x86_64
> allmodconfig) produced this warning:
>
> In file included from drivers/thermal/qcom/tsens-common.c:13:
> drivers/thermal/qcom/tsens-common.c: In function 'tsens_set_interrupt':
> include/linux/regmap.h:87:2: warning: 'index' may be used uninitialized in this function [-Wmaybe-uninitialized]
> 87 | regmap_field_update_bits_base(field, ~0, val, NULL, false, false)
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/thermal/qcom/tsens-common.c:183:6: note: 'index' was declared here
> 183 | u32 index;
> | ^~~~~
> In file included from drivers/thermal/qcom/tsens-common.c:13:
> include/linux/regmap.h:87:2: warning: 'index_clear' may be used uninitialized in this function [-Wmaybe-uninitialized]
> 87 | regmap_field_update_bits_base(field, ~0, val, NULL, false, false)
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/thermal/qcom/tsens-common.c:199:18: note: 'index_clear' was declared here
> 199 | u32 index_mask, index_clear;
> | ^~~~~~~~~~~
> drivers/thermal/qcom/tsens-common.c:199:6: warning: 'index_mask' may be used uninitialized in this function [-Wmaybe-uninitialized]
> 199 | u32 index_mask, index_clear;
> | ^~~~~~~~~~
>
> Introduced by commit
>
> fbfe1a042cfd ("drivers: thermal: tsens: Add interrupt support")
>


What compiler version do you use? Any additional flags to make? I'm
not seeing this, even with W=1.

$ make -k -j`nproc` O=~/work/builds/build-x86/ allmodconfig
$ touch drivers/thermal/qcom/*
──• amit@matterhorn •───(~/.../sources/linux-amit.git) $ make -k
-j`nproc` O=~/work/builds/build-x86/
make[1]: Entering directory '/home/amit/work/builds/build-x86'
GEN Makefile
scripts/kconfig/conf --syncconfig Kconfig
GEN Makefile
DESCEND objtool
CALL /home/amit/work/sources/linux-amit.git/scripts/atomic/check-atomics.sh
CALL /home/amit/work/sources/linux-amit.git/scripts/checksyscalls.sh
CHK include/generated/compile.h
CHK kernel/kheaders_data.tar.xz
CC [M] drivers/thermal/qcom/tsens.o
CC [M] drivers/thermal/qcom/tsens-common.o
CC [M] drivers/thermal/qcom/tsens-v0_1.o
CC [M] drivers/thermal/qcom/tsens-8960.o
CC [M] drivers/thermal/qcom/tsens-v2.o
CC [M] drivers/thermal/qcom/tsens-v1.o
CC [M] drivers/thermal/qcom/qcom-spmi-temp-alarm.o
LD [M] drivers/thermal/qcom/qcom_tsens.o
Building modules, stage 2.
MODPOST 7437 modules
Kernel: arch/x86/boot/bzImage is ready (#3)
LD [M] drivers/thermal/qcom/qcom-spmi-temp-alarm.ko
LD [M] drivers/thermal/qcom/qcom_tsens.ko
make[1]: Leaving directory '/home/amit/work/builds/build-x86'

2019-10-22 15:30:07

by Stephen Rothwell

[permalink] [raw]
Subject: Re: linux-next: build warning after merge of the thermal tree

Hi Amit,

On Tue, 22 Oct 2019 15:20:00 +0530 Amit Kucheria <[email protected]> wrote:
>
> What compiler version do you use? Any additional flags to make? I'm
> not seeing this, even with W=1.

$ x86_64-linux-gnu-gcc --version
x86_64-linux-gnu-gcc (Debian 9.2.1-8) 9.2.1 20190909

No special flags to make.
--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

2019-10-24 20:56:21

by Amit Kucheria

[permalink] [raw]
Subject: Re: linux-next: build warning after merge of the thermal tree

Hi Stephen,

On Tue, Oct 22, 2019 at 4:48 PM Stephen Rothwell <[email protected]> wrote:
>
> Hi Amit,
>
> On Tue, 22 Oct 2019 15:20:00 +0530 Amit Kucheria <[email protected]> wrote:
> >
> > What compiler version do you use? Any additional flags to make? I'm
> > not seeing this, even with W=1.
>
> $ x86_64-linux-gnu-gcc --version
> x86_64-linux-gnu-gcc (Debian 9.2.1-8) 9.2.1 20190909
>
> No special flags to make.

So this warning only shows up with gcc 9.x. I was using 8.x from my
distro. Will upgrade.

I believe the "fix" is to simply initialize the three variables to
zero (See attached diff). I'll squash that into the patch unless
someone disagrees.

In practice though, we depend on the enum tsens_irq_type irq_type
function parameter to throw a compilation error if we use anything not
defined in the enum. That is also the reason we removed the 'default'
case during review - we should never end up with an undefined value at
runtime.

Regards,
Amit


Attachments:
variable_init.patch (837.00 B)

2019-10-29 10:20:29

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: linux-next: build warning after merge of the thermal tree

On Tue, Oct 22, 2019 at 1:25 AM Stephen Rothwell <[email protected]> wrote:
> After merging the thermal tree, today's linux-next build (x86_64
> allmodconfig) produced this warning:
>
> In file included from drivers/thermal/qcom/tsens-common.c:13:
> drivers/thermal/qcom/tsens-common.c: In function 'tsens_set_interrupt':
> include/linux/regmap.h:87:2: warning: 'index' may be used uninitialized in this function [-Wmaybe-uninitialized]
> 87 | regmap_field_update_bits_base(field, ~0, val, NULL, false, false)
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/thermal/qcom/tsens-common.c:183:6: note: 'index' was declared here
> 183 | u32 index;
> | ^~~~~
> In file included from drivers/thermal/qcom/tsens-common.c:13:
> include/linux/regmap.h:87:2: warning: 'index_clear' may be used uninitialized in this function [-Wmaybe-uninitialized]
> 87 | regmap_field_update_bits_base(field, ~0, val, NULL, false, false)
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/thermal/qcom/tsens-common.c:199:18: note: 'index_clear' was declared here
> 199 | u32 index_mask, index_clear;
> | ^~~~~~~~~~~
> drivers/thermal/qcom/tsens-common.c:199:6: warning: 'index_mask' may be used uninitialized in this function [-Wmaybe-uninitialized]
> 199 | u32 index_mask, index_clear;
> | ^~~~~~~~~~
>
> Introduced by commit
>
> fbfe1a042cfd ("drivers: thermal: tsens: Add interrupt support")

And kisskb reported the following link failure on m68k:

ERROR: "__udivdi3" [drivers/thermal/qcom/qcom_tsens.ko] undefined!

Probably caused by a plain 64-bit division in the code.
I expect this shows up on other 32-bit platforms, too.

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds