Resolve most warnings from the 'sparse' static analysis tool for the
arch/riscv codebase. This makes life easier for us as maintainers,
and makes it easier for developers to use static analysis tools on
their own changes.
This fourth version drops some patches that were in the previous
versions, and restructures some of what was left. Much of this was
based on feedback from Christoph Hellwig <[email protected]>, Luc Van
Oostenryck <[email protected]>, and Greentime Hu
<[email protected]>.
Applies on the current riscv fixes branch, which itself is based on
v5.4-rc5. Tested on RV32 QEMU, RV64 QEMU, and the SiFive HiFive
Unleashed board.
- Paul
Paul Walmsley (6):
riscv: add prototypes for assembly language functions from head.S
riscv: init: merge split string literals in preprocessor directive
riscv: mark some code and data as file-static
riscv: add missing header file includes
riscv: fp: add missing __user pointer annotations
riscv: for C functions called only from assembly, mark with __visible
Kernel object size difference:
text data bss dec hex filename
6662533 2136168 312608 9111309 8b070d vmlinux.rv64.orig
6662537 2136160 312608 9111305 8b0709 vmlinux.rv64.patched
6443041 1792976 255184 8491201 8190c1 vmlinux.rv32.orig
6443021 1792968 255184 8491173 8190a5 vmlinux.rv32.patched
arch/riscv/include/asm/irq.h | 3 +++
arch/riscv/include/asm/switch_to.h | 1 +
arch/riscv/kernel/cpufeature.c | 1 +
arch/riscv/kernel/head.h | 21 +++++++++++++++++++++
arch/riscv/kernel/irq.c | 2 +-
arch/riscv/kernel/module-sections.c | 1 +
arch/riscv/kernel/process.c | 2 ++
arch/riscv/kernel/ptrace.c | 4 ++--
arch/riscv/kernel/reset.c | 1 +
arch/riscv/kernel/setup.c | 2 ++
arch/riscv/kernel/signal.c | 8 ++++----
arch/riscv/kernel/smp.c | 2 ++
arch/riscv/kernel/smpboot.c | 5 ++++-
arch/riscv/kernel/syscall_table.c | 1 +
arch/riscv/kernel/time.c | 1 +
arch/riscv/kernel/traps.c | 5 +++--
arch/riscv/kernel/vdso.c | 3 ++-
arch/riscv/mm/context.c | 1 +
arch/riscv/mm/fault.c | 2 ++
arch/riscv/mm/init.c | 5 +++--
arch/riscv/mm/sifive_l2_cache.c | 2 +-
21 files changed, 59 insertions(+), 14 deletions(-)
create mode 100644 arch/riscv/kernel/head.h
--
2.24.0.rc0
sparse complains loudly when string literals associated with
preprocessor directives are split into multiple, separately quoted
strings across different lines:
arch/riscv/mm/init.c:341:9: error: Expected ; at the end of type declaration
arch/riscv/mm/init.c:341:9: error: got "not use absolute addressing."
arch/riscv/mm/init.c:358:9: error: Trying to use reserved word 'do' as identifier
arch/riscv/mm/init.c:358:9: error: Expected ; at end of declaration
[ ... ]
It turns out this doesn't compile. The existing Linux practice for
this situation is simply to use a single long line. So, fix by
concatenating the strings.
This patch should have no functional impact.
This version incorporates changes based on feedback from Luc Van
Oostenryck <[email protected]>.
Signed-off-by: Paul Walmsley <[email protected]>
Reviewed-by: Luc Van Oostenryck <[email protected]>
Reviewed-by: Christoph Hellwig <[email protected]>
Link: https://lore.kernel.org/linux-riscv/CAAhSdy2nX2LwEEAZuMtW_ByGTkHO6KaUEvVxRnba_ENEjmFayQ@mail.gmail.com/T/#mc1a58bc864f71278123d19a7abc083a9c8e37033
Fixes: 387181dcdb6c1 ("RISC-V: Always compile mm/init.c with cmodel=medany and notrace")
Cc: Anup Patel <[email protected]>
---
arch/riscv/mm/init.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c
index 07af7b1e4069..573463d1c799 100644
--- a/arch/riscv/mm/init.c
+++ b/arch/riscv/mm/init.c
@@ -339,8 +339,7 @@ static uintptr_t __init best_map_size(phys_addr_t base, phys_addr_t size)
*/
#ifndef __riscv_cmodel_medany
-#error "setup_vm() is called from head.S before relocate so it should "
- "not use absolute addressing."
+#error "setup_vm() is called from head.S before relocate so it should not use absolute addressing."
#endif
asmlinkage void __init setup_vm(uintptr_t dtb_pa)
--
2.24.0.rc0