stable/linux-3.18.y build: 204 builds: 5 failed, 199 passed, 35 errors, 212 warnings (v3.18.49)

Message ID CAK8P3a3QsSMtc7AWjVjtM+tW8ARt1Ygw53=CSjgbG6Pvpq0QvQ@mail.gmail.com
State New
Headers show

Commit Message

Arnd Bergmann April 21, 2017, 2:27 p.m.
On Thu, Apr 20, 2017 at 7:04 PM, kernelci.org bot <bot@kernelci.org> wrote:
> stable/linux-3.18.y build: 204 builds: 5 failed, 199 passed, 35 errors, 212 warnings (v3.18.49)

I've gone through all these now and found a fix. In three cases, there is no
fix yet since the respective drivers got removed before the warning was
noticed. Do we have a policy for how to deal with those? Should I just
send patches to address the warnings for 3.18?

> Errors summary:
> 7 arch/mips/jz4740/irq.h:21:38: error: 'struct irq_data' declared inside
> parameter list will not be visible outside of this definition or declaration
> [-Werror]
> 7 arch/mips/jz4740/irq.h:20:39: error: 'struct irq_data' declared inside
> parameter list will not be visible outside of this definition or declaration
> [-Werror]


5b235dc2647e4 MIPS: Fix the build on jz4740 after removing the custom gpio.h

> 2 arch/mips/mm/fault.c:321:1: error: the frame size of 1104 bytes is larger
> than 1024 bytes [-Werror=frame-larger-than=]

This is a result of a newer compiler version, combined with the -Werror
flag that is applied to arch/mips/, and two of the mips defconfigs overriding
CONFIG_FRAME_WARN to 1024 on a 64-bit architecture (probably by
accident).

I saw this also when I looked at the 3.16 warnings, but only now actually
bisected it. The fix is

86038c5ea81b ("perf: Avoid horrible stack usage")

> Detailed per-defconfig build reports:
>
> allmodconfig+CONFIG_OF=n (x86) — PASS, 0 errors, 8 warnings, 0 section
> mismatches
>
> Warnings:
> fs/nfs/nfs4proc.c:3062:10: warning: switch condition has boolean value
> [-Wswitch-bool]

c7757074839f ("fs/nfs: fix new compiler warning about boolean in switch")

> drivers/iommu/intel-iommu.c:1762:25: warning: unused variable 'drhd'
> [-Wunused-variable]

509fca899d56 ("iommu/vt-d: Remove unused variable")

> drivers/message/i2o/i2o_config.c:893:19: warning: cast to pointer from
> integer of different size [-Wint-to-pointer-cast]
> drivers/message/i2o/i2o_config.c:953:10: warning: cast to pointer from
> integer of different size [-Wint-to-pointer-cast]

The driver is obsolete and was removed in v4.2. It looks like the warning
should still be there in v4.1.y, but I don't remember having seen it. It
would be trivial to fix this with an obvious patch adding a cast.


> drivers/staging/bcm/CmHost.c:1503:3: warning: cast to pointer from integer
> of different size [-Wint-to-pointer-cast]
> drivers/staging/bcm/CmHost.c:1546:3: warning: cast to pointer from integer
> of different size [-Wint-to-pointer-cast]
> drivers/staging/bcm/CmHost.c:1564:3: warning: cast to pointer from integer
> of different size [-Wint-to-pointer-cast]

Similarly, the driver was removed in v3.19, but I could create a patch for
the warning.

> drivers/scsi/advansys.c:71:2: warning: #warning this driver is still not
> properly converted to the DMA API [-Wcpp]

The driver was properly converted in v4.2 and the warning removed, but the
conversion would be outside of stable-kernel-rules.

> Section mismatches:
> WARNING: arch/x86/kernel/built-in.o(.text.unlikely+0x157f): Section mismatch
> in reference from the function cpumask_empty.constprop.3() to the variable
> .init.data:nmi_ipi_mask
> WARNING: arch/x86/built-in.o(.text.unlikely+0x189b): Section mismatch in
> reference from the function cpumask_empty.constprop.3() to the variable
> .init.data:nmi_ipi_mask
> WARNING: vmlinux.o(.text.unlikely+0x1962): Section mismatch in reference
> from the function cpumask_empty.constprop.3() to the variable
> .init.data:nmi_ipi_mask

f0ba662a6e06f2 x86: Properly _init-annotate NMI selftest code

> allnoconfig (mips) — PASS, 0 errors, 1 warning, 0 section mismatches
>
> Warnings:
> mm/page_alloc.c:5346:34: warning: array subscript is below array bounds
> [-Warray-bounds]

Also bisected this one now, this is also missing on 3.16:

90cae1fe1c35 ("mm/init: fix zone boundary creation")

> ar7_defconfig (mips) — PASS, 0 errors, 2 warnings, 0 section mismatches
>
> Warnings:
> include/linux/kernel.h:713:17: warning: comparison of distinct pointer types
> lacks a cast

2f5281ba2a8f ("net: ti: cpmac: Fix compiler warning due to type confusion")

> at91_dt_defconfig (arm) — PASS, 0 errors, 2 warnings, 0 section mismatches
>
> Warnings:
> drivers/clk/at91/clk-usb.c:155:20: warning: initialization from incompatible
> pointer type [-Wincompatible-pointer-types]
> drivers/clk/at91/clk-usb.c:193:20: warning: initialization from incompatible
> pointer type [-Wincompatible-pointer-types]

I've send this fix:

8<------
clk: at91: usb: fix determine_rate prototype again

We had an incorrect backport of
4591243102fa ("clk: at91: usb: propagate rate modification to the parent clk")
that was fixed incorrectly in linux-3.18.y by
76723e7ed589 ("clk: at91: usb: fix determine_rate prototype")

This should fix it properly.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>

> nlm_xlp_defconfig (mips) — FAIL, 1 error, 3 warnings, 0 section mismatches
>
> Errors:
> fs/gfs2/dir.c:768:9: warning: 'leaf_no' may be used uninitialized in this
> function [-Wmaybe-uninitialized]
> fs/gfs2/dir.c:987:8: warning: 'leaf_no' may be used uninitialized in this
> function [-Wmaybe-uninitialized]

67893f12e537 ("gfs2: avoid uninitialized variable warning")

(also needed on v4.4.y)

> fs/btrfs/extent_io.c:2166:13: warning: cast to pointer from integer of
> different size [-Wint-to-pointer-cast]

6e1103a6e9b1 ("btrfs: fix state->private cast on 32 bit machines")

> realview-smp_defconfig
>
> Warnings:
> arch/arm/mm/cache-l2x0.c:168:13: warning: 'l2x0_cache_sync' defined but not
> used [-Wunused-function]
> arch/arm/mm/cache-l2x0.c:185:13: warning: 'l2x0_flush_all' defined but not
> used [-Wunused-function]
> arch/arm/mm/cache-l2x0.c:195:13: warning: 'l2x0_disable' defined but not
> used [-Wunused-function]

20e783e39e55 ARM: 8296/1: cache-l2x0: clean up aurora cache handling

> rm200_defconfig (mips) — FAIL, 0 errors, 5 warnings, 0 section mismatches
>
> Warnings:
> drivers/scsi/aic94xx/aic94xx_sds.c:597:2: warning: 'offs' may be used
> uninitialized in this function [-Wmaybe-uninitialized]

36dd5acd196574d4 aic94xx: Skip reading user settings if flash is not found

> arch/mips/boot/elf2ecoff.c:270:8: warning: variable 'shstrtab' set but not
> used [-Wunused-but-set-variable]

> Warnings:
> arch/mips/ralink/prom.c:64:2: warning: 'argc' is used uninitialized in this
> function [-Wuninitialized]
> arch/mips/ralink/prom.c:64:2: warning: 'argv' is used uninitialized in this
> function [-Wuninitialized]

9c48568b3692 ("MIPS: ralink: Cosmetic change to prom_init().")

> tinyconfig (arm) — PASS, 0 errors, 3 warnings, 0 section mismatches
>
> Warnings:
> .config:807:warning: override: KERNEL_XZ changes choice state
> .config:809:warning: override: SLOB changes choice state

236dec051078 ("kconfig: tinyconfig: provide whole choice blocks to
avoid warnings")

Comments

Mark Brown April 21, 2017, 2:59 p.m. | #1
On Fri, Apr 21, 2017 at 04:27:14PM +0200, Arnd Bergmann wrote:
> On Thu, Apr 20, 2017 at 7:04 PM, kernelci.org bot <bot@kernelci.org> wrote:
> > stable/linux-3.18.y build: 204 builds: 5 failed, 199 passed, 35 errors, 212 warnings (v3.18.49)

> > 2 arch/mips/mm/fault.c:321:1: error: the frame size of 1104 bytes is larger
> > than 1024 bytes [-Werror=frame-larger-than=]

> This is a result of a newer compiler version, combined with the -Werror
> flag that is applied to arch/mips/, and two of the mips defconfigs overriding
> CONFIG_FRAME_WARN to 1024 on a 64-bit architecture (probably by
> accident).

I'm wondering how good an idea it is to leave -Werror on in stable
kernels given that they're very likely to get used with newer compilers
at some point.  But then I've never been a fan of -Werror in the first
place.
Arnd Bergmann April 21, 2017, 4:17 p.m. | #2
On Fri, Apr 21, 2017 at 4:59 PM, Mark Brown <broonie@kernel.org> wrote:
> On Fri, Apr 21, 2017 at 04:27:14PM +0200, Arnd Bergmann wrote:
>> On Thu, Apr 20, 2017 at 7:04 PM, kernelci.org bot <bot@kernelci.org> wrote:
>> > stable/linux-3.18.y build: 204 builds: 5 failed, 199 passed, 35 errors, 212 warnings (v3.18.49)
>
>> > 2 arch/mips/mm/fault.c:321:1: error: the frame size of 1104 bytes is larger
>> > than 1024 bytes [-Werror=frame-larger-than=]
>
>> This is a result of a newer compiler version, combined with the -Werror
>> flag that is applied to arch/mips/, and two of the mips defconfigs overriding
>> CONFIG_FRAME_WARN to 1024 on a 64-bit architecture (probably by
>> accident).
>
> I'm wondering how good an idea it is to leave -Werror on in stable
> kernels given that they're very likely to get used with newer compilers
> at some point.  But then I've never been a fan of -Werror in the first
> place.

I agree it's problematic as you never know what future compilers will warn
about. At the moment, alpha, mips, sh and sparc turn on -Werror
unconditionally for architecture specific code and there are only five
device drivers do this as well. The powerpc architecture and the i915
driver have a Kconfig option to control whether the warnings are enabled,
and they are turned off in allmodconfig.

I think this is just an artifact from the old days when we always had tons of
warnings in a given build, but we should try to replace it with something
better instead of just removing it (which would be easy enough to do).

I personally build with 'make CC="gcc -Werror" and fix all the warnings I
run into. I have some plans to improve it by hooking into the
scripts/Makefile.extrawarn infrastructure. Today, we can use "make W=1"
or "make W=12" to turn on extra levels of warnings, and I'd like to
add "make E=0" or "make E=012" as a way to turn on errors for
the default (0) or higher (1, 2, 3) levels, but this takes a little more
preparation.

    Arnd
Greg Kroah-Hartman April 27, 2017, 10:33 a.m. | #3
On Fri, Apr 21, 2017 at 04:27:14PM +0200, Arnd Bergmann wrote:
> On Thu, Apr 20, 2017 at 7:04 PM, kernelci.org bot <bot@kernelci.org> wrote:
> > stable/linux-3.18.y build: 204 builds: 5 failed, 199 passed, 35 errors, 212 warnings (v3.18.49)
> 
> I've gone through all these now and found a fix. In three cases, there is no
> fix yet since the respective drivers got removed before the warning was
> noticed. Do we have a policy for how to deal with those? Should I just
> send patches to address the warnings for 3.18?

I've wondered about this, and yeah, I would like to see the number drop
to 0 if at all possible (the scsi driver will not change), so i'll be
glad to take patches for the code that is no longer in upstream.

> > Errors summary:
> > 7 arch/mips/jz4740/irq.h:21:38: error: 'struct irq_data' declared inside
> > parameter list will not be visible outside of this definition or declaration
> > [-Werror]
> > 7 arch/mips/jz4740/irq.h:20:39: error: 'struct irq_data' declared inside
> > parameter list will not be visible outside of this definition or declaration
> > [-Werror]
> 
> 
> 5b235dc2647e4 MIPS: Fix the build on jz4740 after removing the custom gpio.h

now applied.

> > 2 arch/mips/mm/fault.c:321:1: error: the frame size of 1104 bytes is larger
> > than 1024 bytes [-Werror=frame-larger-than=]
> 
> This is a result of a newer compiler version, combined with the -Werror
> flag that is applied to arch/mips/, and two of the mips defconfigs overriding
> CONFIG_FRAME_WARN to 1024 on a 64-bit architecture (probably by
> accident).
> 
> I saw this also when I looked at the 3.16 warnings, but only now actually
> bisected it. The fix is
> 
> 86038c5ea81b ("perf: Avoid horrible stack usage")

Now applied.

> > Detailed per-defconfig build reports:
> >
> > allmodconfig+CONFIG_OF=n (x86) — PASS, 0 errors, 8 warnings, 0 section
> > mismatches
> >
> > Warnings:
> > fs/nfs/nfs4proc.c:3062:10: warning: switch condition has boolean value
> > [-Wswitch-bool]
> 
> c7757074839f ("fs/nfs: fix new compiler warning about boolean in switch")

applied.

> > drivers/iommu/intel-iommu.c:1762:25: warning: unused variable 'drhd'
> > [-Wunused-variable]
> 
> 509fca899d56 ("iommu/vt-d: Remove unused variable")

Ugh, I thought I had found this one in the past, sorry about that, now
applied.

> > drivers/message/i2o/i2o_config.c:893:19: warning: cast to pointer from
> > integer of different size [-Wint-to-pointer-cast]
> > drivers/message/i2o/i2o_config.c:953:10: warning: cast to pointer from
> > integer of different size [-Wint-to-pointer-cast]
> 
> The driver is obsolete and was removed in v4.2. It looks like the warning
> should still be there in v4.1.y, but I don't remember having seen it. It
> would be trivial to fix this with an obvious patch adding a cast.

I'll take a fix :)

> > drivers/staging/bcm/CmHost.c:1503:3: warning: cast to pointer from integer
> > of different size [-Wint-to-pointer-cast]
> > drivers/staging/bcm/CmHost.c:1546:3: warning: cast to pointer from integer
> > of different size [-Wint-to-pointer-cast]
> > drivers/staging/bcm/CmHost.c:1564:3: warning: cast to pointer from integer
> > of different size [-Wint-to-pointer-cast]
> 
> Similarly, the driver was removed in v3.19, but I could create a patch for
> the warning.

I'll take it! :)

> > drivers/scsi/advansys.c:71:2: warning: #warning this driver is still not
> > properly converted to the DMA API [-Wcpp]
> 
> The driver was properly converted in v4.2 and the warning removed, but the
> conversion would be outside of stable-kernel-rules.

Yeah, this one is going to have to stay as-is :(

> > Section mismatches:
> > WARNING: arch/x86/kernel/built-in.o(.text.unlikely+0x157f): Section mismatch
> > in reference from the function cpumask_empty.constprop.3() to the variable
> > .init.data:nmi_ipi_mask
> > WARNING: arch/x86/built-in.o(.text.unlikely+0x189b): Section mismatch in
> > reference from the function cpumask_empty.constprop.3() to the variable
> > .init.data:nmi_ipi_mask
> > WARNING: vmlinux.o(.text.unlikely+0x1962): Section mismatch in reference
> > from the function cpumask_empty.constprop.3() to the variable
> > .init.data:nmi_ipi_mask
> 
> f0ba662a6e06f2 x86: Properly _init-annotate NMI selftest code

That commit is from 3.4, so how can I add it to 3.18? :)

> > allnoconfig (mips) — PASS, 0 errors, 1 warning, 0 section mismatches
> >
> > Warnings:
> > mm/page_alloc.c:5346:34: warning: array subscript is below array bounds
> > [-Warray-bounds]
> 
> Also bisected this one now, this is also missing on 3.16:
> 
> 90cae1fe1c35 ("mm/init: fix zone boundary creation")

Now applied to 3.1_8_ :)

> > ar7_defconfig (mips) — PASS, 0 errors, 2 warnings, 0 section mismatches
> >
> > Warnings:
> > include/linux/kernel.h:713:17: warning: comparison of distinct pointer types
> > lacks a cast
> 
> 2f5281ba2a8f ("net: ti: cpmac: Fix compiler warning due to type confusion")

Ugh, I don't know why this one wasn't in 3.18, that makes me wonder what
I missed that went into 4.4 that didn't make it to 3.18...

> > at91_dt_defconfig (arm) — PASS, 0 errors, 2 warnings, 0 section mismatches
> >
> > Warnings:
> > drivers/clk/at91/clk-usb.c:155:20: warning: initialization from incompatible
> > pointer type [-Wincompatible-pointer-types]
> > drivers/clk/at91/clk-usb.c:193:20: warning: initialization from incompatible
> > pointer type [-Wincompatible-pointer-types]
> 
> I've send this fix:
> 
> 8<------
> clk: at91: usb: fix determine_rate prototype again
> 
> We had an incorrect backport of
> 4591243102fa ("clk: at91: usb: propagate rate modification to the parent clk")
> that was fixed incorrectly in linux-3.18.y by
> 76723e7ed589 ("clk: at91: usb: fix determine_rate prototype")
> 
> This should fix it properly.
> 
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> 
> diff --git a/drivers/clk/at91/clk-usb.c b/drivers/clk/at91/clk-usb.c
> index 0283a5713d6c..930a424cc4a0 100644
> --- a/drivers/clk/at91/clk-usb.c
> +++ b/drivers/clk/at91/clk-usb.c
> @@ -59,7 +59,7 @@ static unsigned long
> at91sam9x5_clk_usb_recalc_rate(struct clk_hw *hw,
>  static long at91sam9x5_clk_usb_determine_rate(struct clk_hw *hw,
>        unsigned long rate,
>        unsigned long *best_parent_rate,
> -      struct clk_hw **best_parent_hw)
> +      struct clk **best_parent_hw)
>  {
>   struct clk *parent = NULL;
>   long best_rate = -EINVAL;
> @@ -91,7 +91,7 @@ static long at91sam9x5_clk_usb_determine_rate(struct
> clk_hw *hw,
>   best_rate = tmp_rate;
>   best_diff = tmp_diff;
>   *best_parent_rate = tmp_parent_rate;
> - *best_parent_hw = __clk_get_hw(parent);
> + *best_parent_hw = parent;
>   }
> 
>   if (!best_diff || tmp_rate < rate)
> ---------->8

Applied.

> > ath79_defconfig (mips) — PASS, 0 errors, 2 warnings, 0 section mismatches
> >
> > Warnings:
> > arch/mips/kernel/entry.S:170: Warning: tried to set unrecognized symbol:
> > MIPS_ISA_LEVEL_RAW
> 
> aebac99384f7 ("MIPS: kernel: entry.S: Set correct ISA level for mips_ihb")

That was in 3.18.14, what kernel are you looking at here???

> > cerfcube_defconfig (arm) — PASS, 0 errors, 2 warnings, 0 section mismatches
> >
> > Warnings:
> > fs/nfsd/nfs4state.c:3781:3: warning: 'old_deny_bmap' may be used
> > uninitialized in this function [-Wmaybe-uninitialized]
> 
> 5368e1a6 ("nfsd: work around a gcc-5.1 warning")

That commit id isn't in Linus's tree, where did you get it from?

> > corgi_defconfig (arm) — PASS, 0 errors, 2 warnings, 0 section mismatches
> >
> > Warnings:
> > drivers/usb/gadget/legacy/inode.c:648:10: warning: 'value' may be used
> > uninitialized in this function [-Wmaybe-uninitialized]
> 
> This is caused by the backport of f01d35a15fa0416 from 4.0 to 3.18:
> c81fc59be42c6e0 gadgetfs: use-after-free in ->aio_read()
> 
> The backported patch was buggy, but the mainline code was
> rewritten in a larger patch directly following this one in a way that
> fixed the bug.
> 
> For stable, we should need only a one-line change, which I sent now:
> 
> diff --git a/drivers/usb/gadget/legacy/inode.c
> b/drivers/usb/gadget/legacy/inode.c
> index 54f964bbc79a..fe45311f243e 100644
> --- a/drivers/usb/gadget/legacy/inode.c
> +++ b/drivers/usb/gadget/legacy/inode.c
> @@ -654,6 +654,7 @@ fail:
>     GFP_KERNEL);
>   if (!priv->iv) {
>   kfree(priv);
> + value = -ENOMEM;
>   goto fail;
>   }
>   }

Now applied.

> > defconfig+CONFIG_LKDTM=y (mips) — PASS, 0 errors, 3 warnings, 0 section
> > mismatches
> >
> > Warnings:
> > include/asm-generic/div64.h:43:28: warning: comparison of distinct pointer
> > types lacks a cast
> > include/asm-generic/div64.h:43:28: warning: comparison of distinct pointer
> > types lacks a cast
> 
> 2ae83bf93882 ("[CIFS] Fix setting time before epoch (negative time values)")

That was in 3.17, are you sure you are looking at 3.18 like the subject
says???

I'll do the rest after lunch...

thanks,

greg k-h
Arnd Bergmann April 27, 2017, 11:40 a.m. | #4
On Thu, Apr 27, 2017 at 12:33 PM, gregkh <gregkh@linuxfoundation.org> wrote:
> On Fri, Apr 21, 2017 at 04:27:14PM +0200, Arnd Bergmann wrote:
>> On Thu, Apr 20, 2017 at 7:04 PM, kernelci.org bot <bot@kernelci.org> wrote:
>> > stable/linux-3.18.y build: 204 builds: 5 failed, 199 passed, 35 errors, 212 warnings (v3.18.49)
>>
>> I've gone through all these now and found a fix. In three cases, there is no
>> fix yet since the respective drivers got removed before the warning was
>> noticed. Do we have a policy for how to deal with those? Should I just
>> send patches to address the warnings for 3.18?
>
> I've wondered about this, and yeah, I would like to see the number drop
> to 0 if at all possible (the scsi driver will not change), so i'll be
> glad to take patches for the code that is no longer in upstream.

Ok, I'll have a go at this after the build report.

>> > drivers/scsi/advansys.c:71:2: warning: #warning this driver is still not
>> > properly converted to the DMA API [-Wcpp]
>>
>> The driver was properly converted in v4.2 and the warning removed, but the
>> conversion would be outside of stable-kernel-rules.
>
> Yeah, this one is going to have to stay as-is :(

How about just shutting up the #warning then, based on the argument that
the warning isn't helping anyone fix it, and all the other drivers that had not
been converted at the time don't come with a #warning?

>> > Section mismatches:
>> > WARNING: arch/x86/kernel/built-in.o(.text.unlikely+0x157f): Section mismatch
>> > in reference from the function cpumask_empty.constprop.3() to the variable
>> > .init.data:nmi_ipi_mask
>> > WARNING: arch/x86/built-in.o(.text.unlikely+0x189b): Section mismatch in
>> > reference from the function cpumask_empty.constprop.3() to the variable
>> > .init.data:nmi_ipi_mask
>> > WARNING: vmlinux.o(.text.unlikely+0x1962): Section mismatch in reference
>> > from the function cpumask_empty.constprop.3() to the variable
>> > .init.data:nmi_ipi_mask
>>
>> f0ba662a6e06f2 x86: Properly _init-annotate NMI selftest code
>
> That commit is from 3.4, so how can I add it to 3.18? :)

Very odd, my search was definitely going wrong there. The file that
we get the warning for was last changed in 3.6, so I accidentally looked
at ancient changes.

Upon a closer look it looks like the problem is the 'cpumask_empty()'
helper function getting uninlined with CONFIG_OPTIMIZE_INLINING,
but I cannot see why the warning is gone in later kernels. I'll probably
have to bisect it.

>> > allnoconfig (mips) — PASS, 0 errors, 1 warning, 0 section mismatches
>> >
>> > Warnings:
>> > mm/page_alloc.c:5346:34: warning: array subscript is below array bounds
>> > [-Warray-bounds]
>>
>> Also bisected this one now, this is also missing on 3.16:
>>
>> 90cae1fe1c35 ("mm/init: fix zone boundary creation")
>
> Now applied to 3.1_8_ :)

Ok. To clarify, I was taking note of the fact this 3.16 needs it since this
is the most frequent warning I still see on Ben's 3.16.y tree, and the
last time I went through the 3.16 build report, I did not succeed in finding
this (without bisecting).

>> > ath79_defconfig (mips) — PASS, 0 errors, 2 warnings, 0 section mismatches
>> >
>> > Warnings:
>> > arch/mips/kernel/entry.S:170: Warning: tried to set unrecognized symbol:
>> > MIPS_ISA_LEVEL_RAW
>>
>> aebac99384f7 ("MIPS: kernel: entry.S: Set correct ISA level for mips_ihb")
>
> That was in 3.18.14, what kernel are you looking at here???

For most of the changes, I tried looking at 'git log v3.18..stable/linux-4.4.y'
and immediately found the obvious fix. If that didn't help, I tried a few other
things, but I usually did not look in 3.18.y to see if it was already there
if I found something at first that looked obviously right.

This is another case where I confused the patch that introduced the
warning with the one that fixed it. This one requires a another patch that
got merged into 3.20:

be5136988e25 ("MIPS: asm: compiler: Add new macros to set ISA and arch
asm annotations")

>> > cerfcube_defconfig (arm) — PASS, 0 errors, 2 warnings, 0 section mismatches
>> >
>> > Warnings:
>> > fs/nfsd/nfs4state.c:3781:3: warning: 'old_deny_bmap' may be used
>> > uninitialized in this function [-Wmaybe-uninitialized]
>>
>> 5368e1a6 ("nfsd: work around a gcc-5.1 warning")

It's a copy-paste mistake, missing the first digits of the commit ID,
I found the correct one now:

6ac75368e1a6 nfsd: work around a gcc-5.1 warning

> That commit id isn't in Linus's tree, where did you get it from?
>> > defconfig+CONFIG_LKDTM=y (mips) — PASS, 0 errors, 3 warnings, 0 section
>> > mismatches
>> >
>> > Warnings:
>> > include/asm-generic/div64.h:43:28: warning: comparison of distinct pointer
>> > types lacks a cast
>> > include/asm-generic/div64.h:43:28: warning: comparison of distinct pointer
>> > types lacks a cast
>>
>> 2ae83bf93882 ("[CIFS] Fix setting time before epoch (negative time values)")
>
> That was in 3.17, are you sure you are looking at 3.18 like the subject
> says???

Another similar mistake on my end, 2ae83bf93882 introduced the problem,
the fix we need was

97c7134ae22f ("Fix signed/unsigned pointer warning")

        Arnd
Greg Kroah-Hartman April 27, 2017, 2:04 p.m. | #5
On Thu, Apr 27, 2017 at 01:40:22PM +0200, Arnd Bergmann wrote:
> On Thu, Apr 27, 2017 at 12:33 PM, gregkh <gregkh@linuxfoundation.org> wrote:
> > On Fri, Apr 21, 2017 at 04:27:14PM +0200, Arnd Bergmann wrote:
> >> On Thu, Apr 20, 2017 at 7:04 PM, kernelci.org bot <bot@kernelci.org> wrote:
> >> > stable/linux-3.18.y build: 204 builds: 5 failed, 199 passed, 35 errors, 212 warnings (v3.18.49)
> >>
> >> I've gone through all these now and found a fix. In three cases, there is no
> >> fix yet since the respective drivers got removed before the warning was
> >> noticed. Do we have a policy for how to deal with those? Should I just
> >> send patches to address the warnings for 3.18?
> >
> > I've wondered about this, and yeah, I would like to see the number drop
> > to 0 if at all possible (the scsi driver will not change), so i'll be
> > glad to take patches for the code that is no longer in upstream.
> 
> Ok, I'll have a go at this after the build report.
> 
> >> > drivers/scsi/advansys.c:71:2: warning: #warning this driver is still not
> >> > properly converted to the DMA API [-Wcpp]
> >>
> >> The driver was properly converted in v4.2 and the warning removed, but the
> >> conversion would be outside of stable-kernel-rules.
> >
> > Yeah, this one is going to have to stay as-is :(
> 
> How about just shutting up the #warning then, based on the argument that
> the warning isn't helping anyone fix it, and all the other drivers that had not
> been converted at the time don't come with a #warning?

Yes, I'll take a patch for that, especially as the driver is now fixed
in newer kernels.

> >> aebac99384f7 ("MIPS: kernel: entry.S: Set correct ISA level for mips_ihb")
> >
> > That was in 3.18.14, what kernel are you looking at here???
> 
> For most of the changes, I tried looking at 'git log v3.18..stable/linux-4.4.y'
> and immediately found the obvious fix. If that didn't help, I tried a few other
> things, but I usually did not look in 3.18.y to see if it was already there
> if I found something at first that looked obviously right.
> 
> This is another case where I confused the patch that introduced the
> warning with the one that fixed it. This one requires a another patch that
> got merged into 3.20:
> 
> be5136988e25 ("MIPS: asm: compiler: Add new macros to set ISA and arch
> asm annotations")

There was no "3.20", it was "4.0" :)

Thanks, I've applied this now.

> >> > cerfcube_defconfig (arm) — PASS, 0 errors, 2 warnings, 0 section mismatches
> >> >
> >> > Warnings:
> >> > fs/nfsd/nfs4state.c:3781:3: warning: 'old_deny_bmap' may be used
> >> > uninitialized in this function [-Wmaybe-uninitialized]
> >>
> >> 5368e1a6 ("nfsd: work around a gcc-5.1 warning")
> 
> It's a copy-paste mistake, missing the first digits of the commit ID,
> I found the correct one now:
> 
> 6ac75368e1a6 nfsd: work around a gcc-5.1 warning

Now applied.

> > That commit id isn't in Linus's tree, where did you get it from?
> >> > defconfig+CONFIG_LKDTM=y (mips) — PASS, 0 errors, 3 warnings, 0 section
> >> > mismatches
> >> >
> >> > Warnings:
> >> > include/asm-generic/div64.h:43:28: warning: comparison of distinct pointer
> >> > types lacks a cast
> >> > include/asm-generic/div64.h:43:28: warning: comparison of distinct pointer
> >> > types lacks a cast
> >>
> >> 2ae83bf93882 ("[CIFS] Fix setting time before epoch (negative time values)")
> >
> > That was in 3.17, are you sure you are looking at 3.18 like the subject
> > says???
> 
> Another similar mistake on my end, 2ae83bf93882 introduced the problem,
> the fix we need was
> 
> 97c7134ae22f ("Fix signed/unsigned pointer warning")

Looks good, also now applied, thanks.

greg k-h
Greg Kroah-Hartman April 27, 2017, 2:28 p.m. | #6
On Fri, Apr 21, 2017 at 04:27:14PM +0200, Arnd Bergmann wrote:
> On Thu, Apr 20, 2017 at 7:04 PM, kernelci.org bot <bot@kernelci.org> wrote:
> > efm32_defconfig (arm) — PASS, 0 errors, 1 warning, 0 section mismatches
> >
> > Warnings:
> > arch/arm/kernel/head-nommu.S:167: Warning: Use of r13 as a source register
> > is deprecated when r15 is the destination register.
> 
> 970d96f9a81b ("ARM: 8383/1: nommu: avoid deprecated source register on mov")

This doesn't apply to the 3.18-stable tree, and I don't know ARM
assembly good enough to backport it properly.  Any hints?

> > imx_v6_v7_defconfig (arm) — PASS, 0 errors, 2 warnings, 0 section mismatches
> >
> > Warnings:
> > drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c:1478:8: warning: 'skb'
> > may be used uninitialized in this function [-Wmaybe-uninitialized]
> 
> 22f44150aad7 ("brcmfmac: avoid gcc-5.1 warning")

Applied.

> > ip27_defconfig (mips) — PASS, 0 errors, 6 warnings, 0 section mismatches
> >
> > Warnings:
> > lib/cpumask.c:194:25: warning: the address of 'cpu_all_bits' will always
> > evaluate as 'true' [-Waddress]
> 
> f36963c9d3f6f4 cpumask_set_cpu_local_first => cpumask_local_spread, lament

Doesn't apply, and I couldn't figure out the backport :(

> > drivers/tty/nozomi.c:857:9: warning: 'size' may be used uninitialized in
> > this function [-Wmaybe-uninitialized]
> 
> a4f642a8a3c2 ("tty: nozomi: avoid a harmless gcc warning")

Applied to 3.18 and 4.4-stable, as it was missing in 4.4

> > drivers/net/ethernet/neterion/vxge/vxge-main.c:2149:13: warning:
> > 'adaptive_coalesce_rx_interrupts' defined but not used [-Wunused-function]
> > drivers/net/ethernet/neterion/vxge/vxge-main.c:2121:13: warning:
> > 'adaptive_coalesce_tx_interrupts' defined but not used [-Wunused-function]
> 
> 57e7c8cef224 ("net: vxge: avoid unused function warnings")

Applied.

> > ip32_defconfig (mips) — PASS, 0 errors, 2 warnings, 0 section mismatches
> >
> > Warnings:
> > drivers/misc/ioc4.c:194:16: warning: 'start' may be used uninitialized in
> > this function [-Wmaybe-uninitialized]
> 
> 769105aa740d ("misc: ioc4: simplify wave period measurement in clock_calibrate")

Applied.

> > malta_defconfig (mips) — PASS, 0 errors, 3 warnings, 0 section mismatches
> >
> > Warnings:
> > drivers/net/wireless/hostap/hostap_hw.c:842:5: warning: 'rec' may be used
> > uninitialized in this function [-Wmaybe-uninitialized]
> 
> 48dc5fb3ba53b2 hostap: avoid uninitialized variable use in hfa384x_get_rid

Applied to 4.4 and 3.18 trees.

> > msp71xx_defconfig (mips) — PASS, 0 errors, 3 warnings, 0 section mismatches
> >
> > Warnings:
> > arch/mips/pci/ops-pmcmsp.c:196:24: warning: 'bpci_lock' defined but not used
> > [-Wunused-variable]
> 
> c4a305374bbf ("MIPS: MSP71xx: remove odd locking in PCI config space
> access code")

Applied.

> > mtx1_defconfig (mips) — PASS, 0 errors, 4 warnings, 0 section mismatches
> >
> > Warnings:
> > drivers/net/ethernet/dec/tulip/winbond-840.c:910:2: warning: #warning
> > Processor architecture undefined [-Wcpp]
> 
> de92718883dd ("net: tulip: turn compile-time warning into dev_warn()")

Applied.

> > multi_v7_defconfig+CONFIG_ARM_LPAE=y (arm) — PASS, 0 errors, 3 warnings, 0
> > section mismatches
> >
> > Warnings:
> > drivers/mmc/host/sunxi-mmc.c:297:35: warning: cast to pointer from integer
> > of different size [-Wint-to-pointer-cast]
> 
> d34712d2e3db ("mmc: sunxi: avoid invalid pointer calculation")

Applied.

> > nlm_xlp_defconfig (mips) — FAIL, 1 error, 3 warnings, 0 section mismatches
> >
> > Errors:
> > fs/gfs2/dir.c:768:9: warning: 'leaf_no' may be used uninitialized in this
> > function [-Wmaybe-uninitialized]
> > fs/gfs2/dir.c:987:8: warning: 'leaf_no' may be used uninitialized in this
> > function [-Wmaybe-uninitialized]
> 
> 67893f12e537 ("gfs2: avoid uninitialized variable warning")
> 
> (also needed on v4.4.y)

Applied to both.

> > fs/btrfs/extent_io.c:2166:13: warning: cast to pointer from integer of
> > different size [-Wint-to-pointer-cast]
> 
> 6e1103a6e9b1 ("btrfs: fix state->private cast on 32 bit machines")

Applied.

> > realview-smp_defconfig
> >
> > Warnings:
> > arch/arm/mm/cache-l2x0.c:168:13: warning: 'l2x0_cache_sync' defined but not
> > used [-Wunused-function]
> > arch/arm/mm/cache-l2x0.c:185:13: warning: 'l2x0_flush_all' defined but not
> > used [-Wunused-function]
> > arch/arm/mm/cache-l2x0.c:195:13: warning: 'l2x0_disable' defined but not
> > used [-Wunused-function]
> 
> 20e783e39e55 ARM: 8296/1: cache-l2x0: clean up aurora cache handling

Applied.

> > rm200_defconfig (mips) — FAIL, 0 errors, 5 warnings, 0 section mismatches
> >
> > Warnings:
> > drivers/scsi/aic94xx/aic94xx_sds.c:597:2: warning: 'offs' may be used
> > uninitialized in this function [-Wmaybe-uninitialized]
> 
> 36dd5acd196574d4 aic94xx: Skip reading user settings if flash is not found

Applied.

> > arch/mips/boot/elf2ecoff.c:270:8: warning: variable 'shstrtab' set but not
> > used [-Wunused-but-set-variable]
> 
> > Warnings:
> > arch/mips/ralink/prom.c:64:2: warning: 'argc' is used uninitialized in this
> > function [-Wuninitialized]
> > arch/mips/ralink/prom.c:64:2: warning: 'argv' is used uninitialized in this
> > function [-Wuninitialized]
> 
> 9c48568b3692 ("MIPS: ralink: Cosmetic change to prom_init().")

Applied.

> > tinyconfig (arm) — PASS, 0 errors, 3 warnings, 0 section mismatches
> >
> > Warnings:
> > .config:807:warning: override: KERNEL_XZ changes choice state
> > .config:809:warning: override: SLOB changes choice state
> 
> 236dec051078 ("kconfig: tinyconfig: provide whole choice blocks to
> avoid warnings")

Applied.

Thanks so much for the list, I think I'm all caught up now, hopefully
the next release will have almost no warnings.

greg k-h

Patch

diff --git a/drivers/clk/at91/clk-usb.c b/drivers/clk/at91/clk-usb.c
index 0283a5713d6c..930a424cc4a0 100644
--- a/drivers/clk/at91/clk-usb.c
+++ b/drivers/clk/at91/clk-usb.c
@@ -59,7 +59,7 @@  static unsigned long
at91sam9x5_clk_usb_recalc_rate(struct clk_hw *hw,
 static long at91sam9x5_clk_usb_determine_rate(struct clk_hw *hw,
       unsigned long rate,
       unsigned long *best_parent_rate,
-      struct clk_hw **best_parent_hw)
+      struct clk **best_parent_hw)
 {
  struct clk *parent = NULL;
  long best_rate = -EINVAL;
@@ -91,7 +91,7 @@  static long at91sam9x5_clk_usb_determine_rate(struct
clk_hw *hw,
  best_rate = tmp_rate;
  best_diff = tmp_diff;
  *best_parent_rate = tmp_parent_rate;
- *best_parent_hw = __clk_get_hw(parent);
+ *best_parent_hw = parent;
  }

  if (!best_diff || tmp_rate < rate)
---------->8

> ath79_defconfig (mips) — PASS, 0 errors, 2 warnings, 0 section mismatches
>
> Warnings:
> arch/mips/kernel/entry.S:170: Warning: tried to set unrecognized symbol:
> MIPS_ISA_LEVEL_RAW

aebac99384f7 ("MIPS: kernel: entry.S: Set correct ISA level for mips_ihb")

> cerfcube_defconfig (arm) — PASS, 0 errors, 2 warnings, 0 section mismatches
>
> Warnings:
> fs/nfsd/nfs4state.c:3781:3: warning: 'old_deny_bmap' may be used
> uninitialized in this function [-Wmaybe-uninitialized]

5368e1a6 ("nfsd: work around a gcc-5.1 warning")

> corgi_defconfig (arm) — PASS, 0 errors, 2 warnings, 0 section mismatches
>
> Warnings:
> drivers/usb/gadget/legacy/inode.c:648:10: warning: 'value' may be used
> uninitialized in this function [-Wmaybe-uninitialized]

This is caused by the backport of f01d35a15fa0416 from 4.0 to 3.18:
c81fc59be42c6e0 gadgetfs: use-after-free in ->aio_read()

The backported patch was buggy, but the mainline code was
rewritten in a larger patch directly following this one in a way that
fixed the bug.

For stable, we should need only a one-line change, which I sent now:

diff --git a/drivers/usb/gadget/legacy/inode.c
b/drivers/usb/gadget/legacy/inode.c
index 54f964bbc79a..fe45311f243e 100644
--- a/drivers/usb/gadget/legacy/inode.c
+++ b/drivers/usb/gadget/legacy/inode.c
@@ -654,6 +654,7 @@  fail:
    GFP_KERNEL);
  if (!priv->iv) {
  kfree(priv);
+ value = -ENOMEM;
  goto fail;
  }
  }

> defconfig+CONFIG_LKDTM=y (mips) — PASS, 0 errors, 3 warnings, 0 section
> mismatches
>
> Warnings:
> include/asm-generic/div64.h:43:28: warning: comparison of distinct pointer
> types lacks a cast
> include/asm-generic/div64.h:43:28: warning: comparison of distinct pointer
> types lacks a cast

2ae83bf93882 ("[CIFS] Fix setting time before epoch (negative time values)")

> efm32_defconfig (arm) — PASS, 0 errors, 1 warning, 0 section mismatches
>
> Warnings:
> arch/arm/kernel/head-nommu.S:167: Warning: Use of r13 as a source register
> is deprecated when r15 is the destination register.

970d96f9a81b ("ARM: 8383/1: nommu: avoid deprecated source register on mov")

> imx_v6_v7_defconfig (arm) — PASS, 0 errors, 2 warnings, 0 section mismatches
>
> Warnings:
> drivers/net/wireless/brcm80211/brcmfmac/fwsignal.c:1478:8: warning: 'skb'
> may be used uninitialized in this function [-Wmaybe-uninitialized]

22f44150aad7 ("brcmfmac: avoid gcc-5.1 warning")

> ip27_defconfig (mips) — PASS, 0 errors, 6 warnings, 0 section mismatches
>
> Warnings:
> lib/cpumask.c:194:25: warning: the address of 'cpu_all_bits' will always
> evaluate as 'true' [-Waddress]

f36963c9d3f6f4 cpumask_set_cpu_local_first => cpumask_local_spread, lament

> include/linux/sched.h:1975:56: warning: 'noio_flag' may be used
> uninitialized in this function [-Wmaybe-uninitialized]

I've bisected this to
be0c37c985ed ("MIPS: Rearrange PTE bits into fixed positions.")
which accidentally shuts up the warning, but does not apply to
3.18, and is not appropriate for a stable backport.

The code is correct, so we can probably just add an initialization
for the variable. Patch sent.

> drivers/tty/nozomi.c:857:9: warning: 'size' may be used uninitialized in
> this function [-Wmaybe-uninitialized]

a4f642a8a3c2 ("tty: nozomi: avoid a harmless gcc warning")

> drivers/net/ethernet/neterion/vxge/vxge-main.c:2149:13: warning:
> 'adaptive_coalesce_rx_interrupts' defined but not used [-Wunused-function]
> drivers/net/ethernet/neterion/vxge/vxge-main.c:2121:13: warning:
> 'adaptive_coalesce_tx_interrupts' defined but not used [-Wunused-function]

57e7c8cef224 ("net: vxge: avoid unused function warnings")

> ip32_defconfig (mips) — PASS, 0 errors, 2 warnings, 0 section mismatches
>
> Warnings:
> drivers/misc/ioc4.c:194:16: warning: 'start' may be used uninitialized in
> this function [-Wmaybe-uninitialized]

769105aa740d ("misc: ioc4: simplify wave period measurement in clock_calibrate")

> malta_defconfig (mips) — PASS, 0 errors, 3 warnings, 0 section mismatches
>
> Warnings:
> drivers/net/wireless/hostap/hostap_hw.c:842:5: warning: 'rec' may be used
> uninitialized in this function [-Wmaybe-uninitialized]

48dc5fb3ba53b2 hostap: avoid uninitialized variable use in hfa384x_get_rid

> msp71xx_defconfig (mips) — PASS, 0 errors, 3 warnings, 0 section mismatches
>
> Warnings:
> arch/mips/pci/ops-pmcmsp.c:196:24: warning: 'bpci_lock' defined but not used
> [-Wunused-variable]

c4a305374bbf ("MIPS: MSP71xx: remove odd locking in PCI config space
access code")
> mtx1_defconfig (mips) — PASS, 0 errors, 4 warnings, 0 section mismatches
>
> Warnings:
> drivers/net/ethernet/dec/tulip/winbond-840.c:910:2: warning: #warning
> Processor architecture undefined [-Wcpp]

de92718883dd ("net: tulip: turn compile-time warning into dev_warn()")

> multi_v7_defconfig+CONFIG_ARM_LPAE=y (arm) — PASS, 0 errors, 3 warnings, 0
> section mismatches
>
> Warnings:
> drivers/mmc/host/sunxi-mmc.c:297:35: warning: cast to pointer from integer
> of different size [-Wint-to-pointer-cast]

d34712d2e3db ("mmc: sunxi: avoid invalid pointer calculation")

> multi_v7_defconfig+CONFIG_SMP=n (arm) — FAIL, 1 error, 2 warnings, 0 section
> mismatches
>
> Errors:
> arch/arm/kernel/psci.c:287:12: error: redefinition of 'psci_init'
> Warnings:

patch sent:

commit 37290221124afbaa9a11f17d2b1fc6bf2e829872
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Apr 21 15:54:10 2017 +0200

    [3.18-stable regression] ARM: psci: fix header file

    Commit be95485a0b828 was incorrectly backported to 3.18 and
    now causes a different build error when CONFIG_SMP is disabled:

     arch/arm/kernel/psci.c:287:12: error: redefinition of 'psci_init'

    This version is how it should be on 3.18, with the main psci
    code built for both SMP and UP, but the psci_smp_available()
    function only being available for SMP builds.

    Fixes: dbcfee724255 ("ARM: 8457/1: psci-smp is built only for SMP")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>

diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
index e3789fb02c9c..8ca5308a05d7 100644
--- a/arch/arm/include/asm/psci.h
+++ b/arch/arm/include/asm/psci.h
@@ -37,11 +37,15 @@  struct psci_operations {
 extern struct psci_operations psci_ops;
 extern struct smp_operations psci_smp_ops;

-#if defined(CONFIG_SMP) && defined(CONFIG_ARM_PSCI)
+#ifdef CONFIG_ARM_PSCI
 int psci_init(void);
-bool psci_smp_available(void);
 #else
 static inline int psci_init(void) { return 0; }
+#endif
+
+#if defined(CONFIG_SMP) && defined(CONFIG_ARM_PSCI)
+bool psci_smp_available(void);
+#else
 static inline bool psci_smp_available(void) { return false; }
 #endif