linux-next: lots of errors/warnings from the -Werror=missing-prototypes addition
Subsystems (4)
Hi all,
please see the kernelci results here:
https://lore.kernel.org/all/[email protected]/
Signature · 2 lines
Cheers, Stephen Rothwell
Quoted 5 lines · On Thu, 30 Nov 2023 07:58:38 +1100 Stephen Rothwell <[email protected]> wrote:
Hi all,
please see the kernelci results here:
And I'm not seeing a lot of fixing activity for these. Arnd, do you think it was just too soon?
Quoted 10 lines · Andrew Morton
Quoted 5 lines · On Thu, 30 Nov 2023 07:58:38 +1100 Stephen Rothwell <[email protected]> wrote:
Hi all,
please see the kernelci results here:
And I'm not seeing a lot of fixing activity for these. Arnd, do you think it was just too soon?
I was aware that a couple of architectures get new warnings, and a previous version of my patch series turned -Wmissing-prototypes off for those architectures.
Since most other architecture maintainers had already fixed all the warnings after that series, my hope was that this would happen for the rest as well.
I did all my testing with CONFIG_WERROR force-enabled, so the bit I missed here is that at least three architectures that are missing fixes also set -Werror: mips, sparc and alpha.
How about adding a patch to no longer force -Werror for these?
arch/alpha/lib/Makefile +0 -1
@@ -4,7 +4,6 @@ # asflags-y := $(KBUILD_CFLAGS) -ccflags-y := -Werror # Many of these routines have implementations tuned for ev6. # Choose them iff we're targeting ev6 specifically.
arch/alpha/mm/Makefile +0 -2
@@ -3,6 +3,4 @@ # Makefile for the linux alpha-specific parts of the memory manager. # -ccflags-y := -Werror - obj-y := init.o fault.o
arch/mips/Kbuild +0 -6
@@ -1,10 +1,4 @@ # SPDX-License-Identifier: GPL-2.0 -# Fail on warnings - also for files referenced in subdirs -# -Werror can be disabled for specific files using: -# CFLAGS_<file.o> := -Wno-error -ifeq ($(W),) -subdir-ccflags-y := -Werror -endif # platform specific definitions include $(srctree)/arch/mips/Kbuild.platforms
arch/sparc/kernel/Makefile +0 -1
@@ -5,7 +5,6 @@ # asflags-y := -ansi -#ccflags-y := -Werror # Undefine sparc when processing vmlinux.lds - it is used # And teach CPP we are doing $(BITS) builds (for this case)
arch/sparc/lib/Makefile +0 -1
@@ -3,7 +3,6 @@ # asflags-y := -ansi -DST_DIV0=0x02 -#ccflags-y := -Werror lib-$(CONFIG_SPARC32) += ashrdi3.o lib-$(CONFIG_SPARC32) += memcpy.o memset.o
arch/sparc/mm/Makefile +0 -1
@@ -3,7 +3,6 @@ # asflags-y := -ansi -#ccflags-y := -Werror obj-$(CONFIG_SPARC64) += ultra.o tlb.o tsb.o obj-y += fault_$(BITS).o
arch/sparc/prom/Makefile +0 -1
@@ -3,7 +3,6 @@ # Linux. # asflags := -ansi -ccflags := -Werror lib-y := bootstr_$(BITS).o lib-y += init_$(BITS).o
I'll also follow up with patches for the top warnings on mips and arc, which should make most of the currently failing builds clean again even with CONFIG_WERROR:
37 arch/mips/kernel/signal.c:903:17: error: no previous prototype for ‘do_notify_resume’ [-Werror=missing-prototypes]
37 arch/mips/kernel/signal.c:673:17: error: no previous prototype for ‘sys_rt_sigreturn’ [-Werror=missing-prototypes]
37 arch/mips/kernel/signal.c:515:5: error: no previous prototype for ‘restore_sigcontext’ [-Werror=missing-prototypes]
37 arch/mips/kernel/signal.c:438:5: error: no previous prototype for ‘setup_sigcontext’ [-Werror=missing-prototypes]
34 arch/mips/kernel/signal.c:636:17: error: no previous prototype for ‘sys_sigreturn’ [-Werror=missing-prototypes]
11 arch/mips/kernel/syscall.c:51:16: error: no previous prototype for ‘sysm_pipe’ [-Werror=missing-prototypes]
8 arch/mips/mm/fault.c:323:17: error: no previous prototype for ‘do_page_fault’ [-Werror=missing-prototypes]
12 arch/arc/kernel/ptrace.c:342:16: warning: no previous prototype for 'syscall_trace_enter' [-Wmissing-prototypes]
5 arch/arc/kernel/kprobes.c:193:15: warning: no previous prototype for 'arc_kprobe_handler' [-Wmissing-prototypes]Arnd
Quoted 6 lines · On Wed, 29 Nov 2023 23:51:04 +0100 "Arnd Bergmann" <[email protected]> wrote:
I did all my testing with
CONFIG_WERRORforce-enabled, so the bit I missed here is that at least three architectures that are missing fixes also set -Werror: mips, sparc and alpha.How about adding a patch to no longer force -Werror for these?
These architectures are doing it wrong, aren't they? They should be using the CONFIG_WERROR infrastructure rather than hard-coding it? If so then sure, a standalone patch to clean that up sounds sounds appropriate. I guess it should precede "Makefile.extrawarn: turn on missing-prototypes globally".
Quoted 6 lines · Andrew Morton
Quoted 4 lines · On Wed, 29 Nov 2023 23:51:04 +0100 "Arnd Bergmann" <[email protected]> wrote:
I did all my testing with
CONFIG_WERRORforce-enabled, so the bit I missed here is that at least three architectures that are missing fixes also set -Werror: mips, sparc and alpha.
Quoted 7 lines
Quoted 2 lines
How about adding a patch to no longer force -Werror for these?
These architectures are doing it wrong, aren't they? They should be using the
CONFIG_WERRORinfrastructure rather than hard-coding it? If so then sure, a standalone patch to clean that up sounds sounds appropriate.
Yes, I think we should have already removed them when CONFIG_WERROR was added in v5.15, the architecture specific logic dates back to v2.6 times.
Quoted 2 lines
I guess it should precede "Makefile.extrawarn: turn on missing-prototypes globally".
I already have a collection of patches to fix up known -Wmissing-prototype warnings across architectures in the asm-generic tree, so I'll add this patch there:
commit bdef96eb0b89dfa80992312a8e3b2613bf178ae5
Author: Arnd Bergmann <[email protected]> Date: Thu Nov 30 00:07:07 2023 +0100
arch: turn off -Werror for architectures with known warnings
A couple of architectures enable -Werror for their own files regardless of CONFIG_WERROR but also have known warnings that fail the build with -Wmissing-prototypes enabled by default:
arch/alpha/lib/memcpy.c:153:8: error: no previous prototype for 'memcpy' [-Werror=missing-prototypes] arch/alpha/kernel/irq.c:96:1: error: no previous prototype for 'handle_irq' [-Werror=missing-prototypes] arch/mips/kernel/signal.c:673:17: error: no previous prototype for ‘sys_rt_sigreturn’ [-Werror=missing-prototypes] arch/mips/kernel/signal.c:636:17: error: no previous prototype for ‘sys_sigreturn’ [-Werror=missing-prototypes] arch/mips/kernel/syscall.c:51:16: error: no previous prototype for ‘sysm_pipe’ [-Werror=missing-prototypes] arch/mips/mm/fault.c:323:17: error: no previous prototype for ‘do_page_fault’ [-Werror=missing-prototypes] arch/sparc/vdso/vma.c:246:12: warning: no previous prototype for ‘init_vdso_image’ [-Wmissing-prototypes]v arch/sparc/vdso/vdso32/../vclock_gettime.c:343:1: warning: no previous prototype for ‘__vdso_gettimeofday_stick’ [-Wmissing-prototypes] arch/sparc/vdso/vclock_gettime.c:343:1: warning: no previous prototype for ‘__vdso_gettimeofday_stick’ [-Wmissing-prototypes] arch/sparc/prom/p1275.c:52:6: warning: no previous prototype for ‘prom_cif_init’ [-Wmissing-prototypes] arch/sparc/prom/misc_64.c:165:5: warning: no previous prototype for ‘prom_get_mmu_ihandle’ [-Wmissing-prototypes]
This appears to be an artifact from the times when this architecture code was better maintained that most device drivers and before CONFIG_WERROR was added. Now it just gets in the way, so remove all of these.
Powerpc and x86 both still have their own Kconfig options to enable -Werror for some of their files. These architectures are better maintained than most and the options are easy to disable, so leave those untouched.
arch/alpha/lib/Makefile +0 -1
@@ -4,7 +4,6 @@ # asflags-y := $(KBUILD_CFLAGS) -ccflags-y := -Werror # Many of these routines have implementations tuned for ev6. # Choose them iff we're targeting ev6 specifically.
arch/alpha/mm/Makefile +0 -2
@@ -3,6 +3,4 @@ # Makefile for the linux alpha-specific parts of the memory manager. # -ccflags-y := -Werror - obj-y := init.o fault.o
arch/mips/Kbuild +0 -6
@@ -1,10 +1,4 @@ # SPDX-License-Identifier: GPL-2.0 -# Fail on warnings - also for files referenced in subdirs -# -Werror can be disabled for specific files using: -# CFLAGS_<file.o> := -Wno-error -ifeq ($(W),) -subdir-ccflags-y := -Werror -endif # platform specific definitions include $(srctree)/arch/mips/Kbuild.platforms
arch/sparc/kernel/Makefile +0 -1
@@ -5,7 +5,6 @@ # asflags-y := -ansi -#ccflags-y := -Werror # Undefine sparc when processing vmlinux.lds - it is used # And teach CPP we are doing $(BITS) builds (for this case)
arch/sparc/lib/Makefile +0 -1
@@ -3,7 +3,6 @@ # asflags-y := -ansi -DST_DIV0=0x02 -#ccflags-y := -Werror lib-$(CONFIG_SPARC32) += ashrdi3.o lib-$(CONFIG_SPARC32) += memcpy.o memset.o
arch/sparc/mm/Makefile +0 -1
@@ -3,7 +3,6 @@ # asflags-y := -ansi -#ccflags-y := -Werror obj-$(CONFIG_SPARC64) += ultra.o tlb.o tsb.o obj-y += fault_$(BITS).o
arch/sparc/prom/Makefile +0 -1
@@ -3,7 +3,6 @@ # Linux. # asflags := -ansi -ccflags := -Werror lib-y := bootstr_$(BITS).o lib-y += init_$(BITS).o
Quoted 7 lines · On Thu, 30 Nov 2023 09:07:38 +0100 "Arnd Bergmann" <[email protected]> wrote:
Quoted 2 lines
I guess it should precede "Makefile.extrawarn: turn on missing-prototypes globally".
I already have a collection of patches to fix up known -Wmissing-prototype warnings across architectures in the asm-generic tree, so I'll add this patch there:
Quoted 5 lines
commit
bdef96eb0b89dfa80992312a8e3b2613bf178ae5Author: Arnd Bergmann <[email protected]> Date: Thu Nov 30 00:07:07 2023 +0100arch: turn off -Werror for architectures with known warnings
I think this would be better in the mm-nonmm tree, alongside "Makefile.extrawarn: turn on missing-prototypes globally". Can I steal it?
Quoted 9 lines · Andrew Morton
Quoted 7 lines · On Thu, 30 Nov 2023 09:07:38 +0100 "Arnd Bergmann" <[email protected]> wrote:
Quoted 2 lines
I guess it should precede "Makefile.extrawarn: turn on missing-prototypes globally".
I already have a collection of patches to fix up known -Wmissing-prototype warnings across architectures in the asm-generic tree, so I'll add this patch there:
Quoted 8 lines
Quoted 5 lines
commit
bdef96eb0b89dfa80992312a8e3b2613bf178ae5Author: Arnd Bergmann <[email protected]> Date: Thu Nov 30 00:07:07 2023 +0100arch: turn off -Werror for architectures with known warnings
I think this would be better in the mm-nonmm tree, alongside "Makefile.extrawarn: turn on missing-prototypes globally". Can I steal it?
Agreed, that does help with bisection. I had pushed out the asm-generic branch with the patch earlier today but now reverted back to the previous state.
Arnd