[00/15] arm64: address -Wmissing-prototype warnings

Message ID 20230516160642.523862-1-arnd@kernel.org
Headers
Series arm64: address -Wmissing-prototype warnings |

Message

Arnd Bergmann May 16, 2023, 4:06 p.m. UTC
  From: Arnd Bergmann <arnd@arndb.de>

This addresses all arm64 specific protype warnings. As with the arm32
patches, the majority of them  should be straightforward, either adding
an #include statement to get the right header, or ensuring that an unused
global function is left out of the build when the prototype is hidden.

The ones that are a bit awkward are those that just add a prototype to
shut up the warning, but the prototypes are never used for calling the
function because the only caller is in assembler code. I tried to come
up with other ways to shut up the compiler, and ideally this would be
triggered by the 'asmlinkage' keyword as Ard suggested in the past, but
I could not come up with a way to do this.

All of the warnings have to be addressed in some form before the
warning can be enabled by default.

    Arnd

Link: https://people.kernel.org/arnd/missing-prototype-warnings-in-the-kernel


Arnd Bergmann (15):
  arm64: xor-neon: mark xor_arm64_neon_*() static
  arm64: add scs_patch_vmlinux prototype
  arm64: avoid prototype warnings for syscalls
  arm64: move cpu_suspend_set_dbg_restorer() prototype to header
  arm64: spectre: provide prototypes for internal functions
  arm64: kvm: add prototypes for functions called in asm
  arm64: cpuidle: fix #ifdef for acpi functions
  arm64: efi: add efi_handle_corrupted_x18 prototype
  arm64: hide unused is_valid_bugaddr()
  arm64: module-plts: inline linux/moduleloader.h
  arm64: flush: include linux/libnvdimm.h
  arm64: kaslr: add kaslr_early_init() declaration
  arm64: signal: include asm/exception.h
  arm64: move early_brk64 prototype to header
  arm64: add alt_cb_patch_nops prototype

 arch/arm64/include/asm/alternative.h     |  3 +++
 arch/arm64/include/asm/archrandom.h      |  2 ++
 arch/arm64/include/asm/compat.h          |  2 ++
 arch/arm64/include/asm/efi.h             |  2 ++
 arch/arm64/include/asm/hw_breakpoint.h   |  8 ++++++++
 arch/arm64/include/asm/kvm_asm.h         | 18 ++++++++++++++++++
 arch/arm64/include/asm/scs.h             |  1 +
 arch/arm64/include/asm/spectre.h         | 16 ++++++++++++++++
 arch/arm64/include/asm/syscall_wrapper.h |  4 ++++
 arch/arm64/include/asm/traps.h           |  2 ++
 arch/arm64/kernel/cpuidle.c              |  2 +-
 arch/arm64/kernel/hw_breakpoint.c        |  8 --------
 arch/arm64/kernel/module-plts.c          |  1 +
 arch/arm64/kernel/signal.c               |  1 +
 arch/arm64/kernel/traps.c                |  3 ++-
 arch/arm64/lib/xor-neon.c                |  8 ++++----
 arch/arm64/mm/fault.c                    |  3 ---
 arch/arm64/mm/flush.c                    |  1 +
 18 files changed, 68 insertions(+), 17 deletions(-)
  

Comments

Ard Biesheuvel May 16, 2023, 5:17 p.m. UTC | #1
On Tue, 16 May 2023 at 18:06, Arnd Bergmann <arnd@kernel.org> wrote:
>
> From: Arnd Bergmann <arnd@arndb.de>
>
> This addresses all arm64 specific protype warnings. As with the arm32
> patches, the majority of them  should be straightforward, either adding
> an #include statement to get the right header, or ensuring that an unused
> global function is left out of the build when the prototype is hidden.
>
> The ones that are a bit awkward are those that just add a prototype to
> shut up the warning, but the prototypes are never used for calling the
> function because the only caller is in assembler code. I tried to come
> up with other ways to shut up the compiler, and ideally this would be
> triggered by the 'asmlinkage' keyword as Ard suggested in the past, but
> I could not come up with a way to do this.
>
> All of the warnings have to be addressed in some form before the
> warning can be enabled by default.
>
>     Arnd
>
> Link: https://people.kernel.org/arnd/missing-prototype-warnings-in-the-kernel
>

For the record, as I mentioned a while ago, I think it is a bit
disappointing that we cannot teach the compiler that 'asmlinkage'
functions don't need a prototype. But I don't have any objections to
these changes, so

Acked-by: Ard Biesheuvel <ardb@kernel.org>

>
> Arnd Bergmann (15):
>   arm64: xor-neon: mark xor_arm64_neon_*() static
>   arm64: add scs_patch_vmlinux prototype
>   arm64: avoid prototype warnings for syscalls
>   arm64: move cpu_suspend_set_dbg_restorer() prototype to header
>   arm64: spectre: provide prototypes for internal functions
>   arm64: kvm: add prototypes for functions called in asm
>   arm64: cpuidle: fix #ifdef for acpi functions
>   arm64: efi: add efi_handle_corrupted_x18 prototype
>   arm64: hide unused is_valid_bugaddr()
>   arm64: module-plts: inline linux/moduleloader.h
>   arm64: flush: include linux/libnvdimm.h
>   arm64: kaslr: add kaslr_early_init() declaration
>   arm64: signal: include asm/exception.h
>   arm64: move early_brk64 prototype to header
>   arm64: add alt_cb_patch_nops prototype
>
>  arch/arm64/include/asm/alternative.h     |  3 +++
>  arch/arm64/include/asm/archrandom.h      |  2 ++
>  arch/arm64/include/asm/compat.h          |  2 ++
>  arch/arm64/include/asm/efi.h             |  2 ++
>  arch/arm64/include/asm/hw_breakpoint.h   |  8 ++++++++
>  arch/arm64/include/asm/kvm_asm.h         | 18 ++++++++++++++++++
>  arch/arm64/include/asm/scs.h             |  1 +
>  arch/arm64/include/asm/spectre.h         | 16 ++++++++++++++++
>  arch/arm64/include/asm/syscall_wrapper.h |  4 ++++
>  arch/arm64/include/asm/traps.h           |  2 ++
>  arch/arm64/kernel/cpuidle.c              |  2 +-
>  arch/arm64/kernel/hw_breakpoint.c        |  8 --------
>  arch/arm64/kernel/module-plts.c          |  1 +
>  arch/arm64/kernel/signal.c               |  1 +
>  arch/arm64/kernel/traps.c                |  3 ++-
>  arch/arm64/lib/xor-neon.c                |  8 ++++----
>  arch/arm64/mm/fault.c                    |  3 ---
>  arch/arm64/mm/flush.c                    |  1 +
>  18 files changed, 68 insertions(+), 17 deletions(-)
>
> --
> 2.39.2
>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Will Deacon <will@kernel.org>
> Cc: Ard Biesheuvel <ardb@kernel.org>
> Cc: Mark Rutland <mark.rutland@arm.com>
> Cc: Marc Zyngier <maz@kernel.org>
> Cc: Oliver Upton <oliver.upton@linux.dev>
> Cc: James Morse <james.morse@arm.com>
> Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
> Cc: Zenghui Yu <yuzenghui@huawei.com>
> Cc: Arnd Bergmann <arnd@arndb.de>
> Cc: Anshuman Khandual <anshuman.khandual@arm.com>
> Cc: Kees Cook <keescook@chromium.org>
> Cc: Suren Baghdasaryan <surenb@google.com>
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linux-kernel@vger.kernel.org
> Cc: linux-efi@vger.kernel.org
> Cc: kvmarm@lists.linux.dev
>
  
Kees Cook May 16, 2023, 7:53 p.m. UTC | #2
On Tue, May 16, 2023 at 06:06:27PM +0200, Arnd Bergmann wrote:
> This addresses all arm64 specific protype warnings. As with the arm32
> patches, the majority of them  should be straightforward, either adding
> an #include statement to get the right header, or ensuring that an unused
> global function is left out of the build when the prototype is hidden.

These look good; thanks for tracking these all down! For the series:

Reviewed-by: Kees Cook <keescook@chromium.org>
  
Catalin Marinas May 25, 2023, 6:25 p.m. UTC | #3
On Tue, 16 May 2023 18:06:27 +0200, Arnd Bergmann wrote:
> This addresses all arm64 specific protype warnings. As with the arm32
> patches, the majority of them  should be straightforward, either adding
> an #include statement to get the right header, or ensuring that an unused
> global function is left out of the build when the prototype is hidden.
> 
> The ones that are a bit awkward are those that just add a prototype to
> shut up the warning, but the prototypes are never used for calling the
> function because the only caller is in assembler code. I tried to come
> up with other ways to shut up the compiler, and ideally this would be
> triggered by the 'asmlinkage' keyword as Ard suggested in the past, but
> I could not come up with a way to do this.
> 
> [...]

Applied to arm64 (for-next/missing-proto-warn), thanks!

[01/15] arm64: xor-neon: mark xor_arm64_neon_*() static
        https://git.kernel.org/arm64/c/320a93d4df48
[02/15] arm64: add scs_patch_vmlinux prototype
        https://git.kernel.org/arm64/c/aea197160d74
[03/15] arm64: avoid prototype warnings for syscalls
        https://git.kernel.org/arm64/c/6ac19f96515e
[04/15] arm64: move cpu_suspend_set_dbg_restorer() prototype to header
        https://git.kernel.org/arm64/c/ec3a3db7100d
[05/15] arm64: spectre: provide prototypes for internal functions
        https://git.kernel.org/arm64/c/010089e9d3fe
[06/15] arm64: kvm: add prototypes for functions called in asm
        https://git.kernel.org/arm64/c/05d557a5cf59
[07/15] arm64: cpuidle: fix #ifdef for acpi functions
        https://git.kernel.org/arm64/c/68a879b55346
[08/15] arm64: efi: add efi_handle_corrupted_x18 prototype
        https://git.kernel.org/arm64/c/fbc0cd6f6044
[09/15] arm64: hide unused is_valid_bugaddr()
        https://git.kernel.org/arm64/c/b925b4314c91
[10/15] arm64: module-plts: inline linux/moduleloader.h
        https://git.kernel.org/arm64/c/60a0aab7463e
[11/15] arm64: flush: include linux/libnvdimm.h
        https://git.kernel.org/arm64/c/1a1183938946
[12/15] arm64: kaslr: add kaslr_early_init() declaration
        https://git.kernel.org/arm64/c/a7f5cb606e99
[13/15] arm64: signal: include asm/exception.h
        https://git.kernel.org/arm64/c/8ada7aab02ee
[14/15] arm64: move early_brk64 prototype to header
        https://git.kernel.org/arm64/c/e13d32e99264
[15/15] arm64: add alt_cb_patch_nops prototype
        https://git.kernel.org/arm64/c/c152aed4dcc2