[RFC] rust: kernel: Add KUnit tests for ARCH_WARN_ASM bug table emission
Mukesh Kumar Chaurasiya
mkchauras at gmail.com
Thu Sep 24 23:38:38 PDT 2026
> Untested thingies for arm64 and s390x.
>
> diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c
> index 914282016069..3d8a969eab5f 100644
> --- a/arch/arm64/kernel/traps.c
> +++ b/arch/arm64/kernel/traps.c
> @@ -987,14 +987,13 @@ void do_serror(struct pt_regs *regs, unsigned long esr)
> #ifdef CONFIG_GENERIC_BUG
> int is_valid_bugaddr(unsigned long addr)
> {
> - /*
> - * bug_brk_handler() only called for BRK #BUG_BRK_IMM.
> - * So the answer is trivial -- any spurious instances with no
> - * bug table entry will be rejected by report_bug() and passed
> - * back to the debug-monitors code and handled as a fatal
> - * unexpected debug exception.
> - */
> - return 1;
> + u32 insn;
> +
> + if (aarch64_insn_read((u32 *)addr, &insn))
> + return 0;
> +
> + /* Match ASM_BUG_FLAGS() / BUG() instructions. */
> + return insn == (0xd4200000 | (BUG_BRK_IMM << 5));
> }
> #endif
>
> diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c
> index b6ba4465f59d..8bbb082fd5e3 100644
> --- a/arch/s390/kernel/traps.c
> +++ b/arch/s390/kernel/traps.c
> @@ -26,6 +26,7 @@
> #include <linux/entry-common.h>
> #include <linux/kmsan.h>
> #include <linux/bug.h>
> +#include <linux/uaccess.h>
> #include <asm/entry-percpu.h>
> #include <asm/asm-extable.h>
> #include <asm/irqflags.h>
> @@ -55,7 +56,12 @@ static inline void __user *get_trap_ip(struct pt_regs *regs)
> #ifdef CONFIG_GENERIC_BUG
> int is_valid_bugaddr(unsigned long addr)
> {
> - return 1;
> + u16 insn;
> +
> + if (get_kernel_nofault(insn, (u16 *)addr))
> + return 0;
> +
> + return insn == 0x0001 || insn == 0x000e;
> }
> #endif
>
Thanks for this.
lemme test these and i'll send it out after verifying.
Regards,
Mukesh
More information about the linux-riscv
mailing list