arch/arm64/kernel/traps.c | 1 - 1 file changed, 1 deletion(-)
die() never returns, the break is unreachable in arch/arm64/kernel/traps.c
Signed-off-by: Osama Abdelkader <osama.abdelkader@gmail.com>
---
arch/arm64/kernel/traps.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c
index 681939ef5d16..81dd2d7759eb 100644
--- a/arch/arm64/kernel/traps.c
+++ b/arch/arm64/kernel/traps.c
@@ -1003,7 +1003,6 @@ int bug_brk_handler(struct pt_regs *regs, unsigned long esr)
switch (report_bug(regs->pc, regs)) {
case BUG_TRAP_TYPE_BUG:
die("Oops - BUG", regs, esr);
- break;
case BUG_TRAP_TYPE_WARN:
break;
--
2.43.0
Hi Osama,
kernel test robot noticed the following build warnings:
[auto build test WARNING on arm64/for-next/core]
[also build test WARNING on linus/master v6.18-rc7 next-20251127]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Osama-Abdelkader/arm64-Remove-unreachable-break-after-die/20251127-062758
base: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-next/core
patch link: https://lore.kernel.org/r/20251126222620.215245-1-osama.abdelkader%40gmail.com
patch subject: [PATCH] arm64: Remove unreachable break after die
config: arm64-randconfig-001-20251128 (https://download.01.org/0day-ci/archive/20251128/202511281049.oCzxmRVJ-lkp@intel.com/config)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project b3428bb966f1de8aa48375ffee0eba04ede133b7)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251128/202511281049.oCzxmRVJ-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202511281049.oCzxmRVJ-lkp@intel.com/
All warnings (new ones prefixed by >>):
| ^~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:833:28: note: previous initialization is here
833 | [0 ... ESR_ELx_EC_MAX] = "UNRECOGNIZED EC",
| ^~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:862:27: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
862 | [ESR_ELx_EC_DABT_CUR] = "DABT (current EL)",
| ^~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:833:28: note: previous initialization is here
833 | [0 ... ESR_ELx_EC_MAX] = "UNRECOGNIZED EC",
| ^~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:863:27: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
863 | [ESR_ELx_EC_SP_ALIGN] = "SP Alignment",
| ^~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:833:28: note: previous initialization is here
833 | [0 ... ESR_ELx_EC_MAX] = "UNRECOGNIZED EC",
| ^~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:864:23: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
864 | [ESR_ELx_EC_MOPS] = "MOPS",
| ^~~~~~
arch/arm64/kernel/traps.c:833:28: note: previous initialization is here
833 | [0 ... ESR_ELx_EC_MAX] = "UNRECOGNIZED EC",
| ^~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:865:27: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
865 | [ESR_ELx_EC_FP_EXC32] = "FP (AArch32)",
| ^~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:833:28: note: previous initialization is here
833 | [0 ... ESR_ELx_EC_MAX] = "UNRECOGNIZED EC",
| ^~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:866:27: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
866 | [ESR_ELx_EC_FP_EXC64] = "FP (AArch64)",
| ^~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:833:28: note: previous initialization is here
833 | [0 ... ESR_ELx_EC_MAX] = "UNRECOGNIZED EC",
| ^~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:867:22: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
867 | [ESR_ELx_EC_GCS] = "Guarded Control Stack",
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:833:28: note: previous initialization is here
833 | [0 ... ESR_ELx_EC_MAX] = "UNRECOGNIZED EC",
| ^~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:868:25: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
868 | [ESR_ELx_EC_SERROR] = "SError",
| ^~~~~~~~
arch/arm64/kernel/traps.c:833:28: note: previous initialization is here
833 | [0 ... ESR_ELx_EC_MAX] = "UNRECOGNIZED EC",
| ^~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:869:29: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
869 | [ESR_ELx_EC_BREAKPT_LOW] = "Breakpoint (lower EL)",
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:833:28: note: previous initialization is here
833 | [0 ... ESR_ELx_EC_MAX] = "UNRECOGNIZED EC",
| ^~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:870:29: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
870 | [ESR_ELx_EC_BREAKPT_CUR] = "Breakpoint (current EL)",
| ^~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:833:28: note: previous initialization is here
833 | [0 ... ESR_ELx_EC_MAX] = "UNRECOGNIZED EC",
| ^~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:871:29: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
871 | [ESR_ELx_EC_SOFTSTP_LOW] = "Software Step (lower EL)",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:833:28: note: previous initialization is here
833 | [0 ... ESR_ELx_EC_MAX] = "UNRECOGNIZED EC",
| ^~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:872:29: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
872 | [ESR_ELx_EC_SOFTSTP_CUR] = "Software Step (current EL)",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:833:28: note: previous initialization is here
833 | [0 ... ESR_ELx_EC_MAX] = "UNRECOGNIZED EC",
| ^~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:873:29: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
873 | [ESR_ELx_EC_WATCHPT_LOW] = "Watchpoint (lower EL)",
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:833:28: note: previous initialization is here
833 | [0 ... ESR_ELx_EC_MAX] = "UNRECOGNIZED EC",
| ^~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:874:29: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
874 | [ESR_ELx_EC_WATCHPT_CUR] = "Watchpoint (current EL)",
| ^~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:833:28: note: previous initialization is here
833 | [0 ... ESR_ELx_EC_MAX] = "UNRECOGNIZED EC",
| ^~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:875:25: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
875 | [ESR_ELx_EC_BKPT32] = "BKPT (AArch32)",
| ^~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:833:28: note: previous initialization is here
833 | [0 ... ESR_ELx_EC_MAX] = "UNRECOGNIZED EC",
| ^~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:876:27: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
876 | [ESR_ELx_EC_VECTOR32] = "Vector catch (AArch32)",
| ^~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:833:28: note: previous initialization is here
833 | [0 ... ESR_ELx_EC_MAX] = "UNRECOGNIZED EC",
| ^~~~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:877:24: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
877 | [ESR_ELx_EC_BRK64] = "BRK (AArch64)",
| ^~~~~~~~~~~~~~~
arch/arm64/kernel/traps.c:833:28: note: previous initialization is here
833 | [0 ... ESR_ELx_EC_MAX] = "UNRECOGNIZED EC",
| ^~~~~~~~~~~~~~~~~
>> arch/arm64/kernel/traps.c:1007:2: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough]
1007 | case BUG_TRAP_TYPE_WARN:
| ^
arch/arm64/kernel/traps.c:1007:2: note: insert 'break;' to avoid fall-through
1007 | case BUG_TRAP_TYPE_WARN:
| ^
| break;
45 warnings generated.
vim +1007 arch/arm64/kernel/traps.c
9fb7410f955f7a Dave P Martin 2015-07-24 1000
6adfdc5e2ef9c7 Ada Couprie Diaz 2025-07-07 1001 int bug_brk_handler(struct pt_regs *regs, unsigned long esr)
9fb7410f955f7a Dave P Martin 2015-07-24 1002 {
9fb7410f955f7a Dave P Martin 2015-07-24 1003 switch (report_bug(regs->pc, regs)) {
9fb7410f955f7a Dave P Martin 2015-07-24 1004 case BUG_TRAP_TYPE_BUG:
0f2cb928a1547a Mark Rutland 2022-09-13 1005 die("Oops - BUG", regs, esr);
9fb7410f955f7a Dave P Martin 2015-07-24 1006
9fb7410f955f7a Dave P Martin 2015-07-24 @1007 case BUG_TRAP_TYPE_WARN:
9fb7410f955f7a Dave P Martin 2015-07-24 1008 break;
9fb7410f955f7a Dave P Martin 2015-07-24 1009
9fb7410f955f7a Dave P Martin 2015-07-24 1010 default:
9fb7410f955f7a Dave P Martin 2015-07-24 1011 /* unknown/unrecognised bug trap type */
9fb7410f955f7a Dave P Martin 2015-07-24 1012 return DBG_HOOK_ERROR;
9fb7410f955f7a Dave P Martin 2015-07-24 1013 }
9fb7410f955f7a Dave P Martin 2015-07-24 1014
9fb7410f955f7a Dave P Martin 2015-07-24 1015 /* If thread survives, skip over the BUG instruction and continue: */
6436beeee5721a Julien Thierry 2017-10-25 1016 arm64_skip_faulting_instruction(regs, AARCH64_INSN_SIZE);
9fb7410f955f7a Dave P Martin 2015-07-24 1017 return DBG_HOOK_HANDLED;
9fb7410f955f7a Dave P Martin 2015-07-24 1018 }
9fb7410f955f7a Dave P Martin 2015-07-24 1019
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
On Thu, Nov 27, 2025 at 12:26:20AM +0200, Osama Abdelkader wrote:
> die() never returns, the break is unreachable in arch/arm64/kernel/traps.c
Is the break causing some problem, e.g. a compiler warning?
If not, then I don't see a reason to remove the break.
There are many other instances of "die(...); break" throughout the
kernel, and this doesn't seem to be speecial.
Mark.
> Signed-off-by: Osama Abdelkader <osama.abdelkader@gmail.com>
> ---
> arch/arm64/kernel/traps.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c
> index 681939ef5d16..81dd2d7759eb 100644
> --- a/arch/arm64/kernel/traps.c
> +++ b/arch/arm64/kernel/traps.c
> @@ -1003,7 +1003,6 @@ int bug_brk_handler(struct pt_regs *regs, unsigned long esr)
> switch (report_bug(regs->pc, regs)) {
> case BUG_TRAP_TYPE_BUG:
> die("Oops - BUG", regs, esr);
> - break;
>
> case BUG_TRAP_TYPE_WARN:
> break;
> --
> 2.43.0
>
On 27/11/25 2:50 PM, Mark Rutland wrote:
> On Thu, Nov 27, 2025 at 12:26:20AM +0200, Osama Abdelkader wrote:
>> die() never returns, the break is unreachable in arch/arm64/kernel/traps.c
>
> Is the break causing some problem, e.g. a compiler warning?
>
> If not, then I don't see a reason to remove the break.
>
> There are many other instances of "die(...); break" throughout the
> kernel, and this doesn't seem to be speecial.
Agree with Mark. From switch case semantics perspective a break is expected
here regardless what happens to control flow.
>
> Mark.
>
>> Signed-off-by: Osama Abdelkader <osama.abdelkader@gmail.com>
>> ---
>> arch/arm64/kernel/traps.c | 1 -
>> 1 file changed, 1 deletion(-)
>>
>> diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c
>> index 681939ef5d16..81dd2d7759eb 100644
>> --- a/arch/arm64/kernel/traps.c
>> +++ b/arch/arm64/kernel/traps.c
>> @@ -1003,7 +1003,6 @@ int bug_brk_handler(struct pt_regs *regs, unsigned long esr)
>> switch (report_bug(regs->pc, regs)) {
>> case BUG_TRAP_TYPE_BUG:
>> die("Oops - BUG", regs, esr);
>> - break;
>>
>> case BUG_TRAP_TYPE_WARN:
>> break;
>> --
>> 2.43.0
>>
>
On Fri, Nov 28, 2025 at 08:01:22AM +0530, Anshuman Khandual wrote:
>
>
> On 27/11/25 2:50 PM, Mark Rutland wrote:
> > On Thu, Nov 27, 2025 at 12:26:20AM +0200, Osama Abdelkader wrote:
> >> die() never returns, the break is unreachable in arch/arm64/kernel/traps.c
> >
> > Is the break causing some problem, e.g. a compiler warning?
> >
> > If not, then I don't see a reason to remove the break.
> >
> > There are many other instances of "die(...); break" throughout the
> > kernel, and this doesn't seem to be speecial.
>
> Agree with Mark. From switch case semantics perspective a break is expected
> here regardless what happens to control flow.
>
> >
> > Mark.
> >
> >> Signed-off-by: Osama Abdelkader <osama.abdelkader@gmail.com>
> >> ---
> >> arch/arm64/kernel/traps.c | 1 -
> >> 1 file changed, 1 deletion(-)
> >>
> >> diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c
> >> index 681939ef5d16..81dd2d7759eb 100644
> >> --- a/arch/arm64/kernel/traps.c
> >> +++ b/arch/arm64/kernel/traps.c
> >> @@ -1003,7 +1003,6 @@ int bug_brk_handler(struct pt_regs *regs, unsigned long esr)
> >> switch (report_bug(regs->pc, regs)) {
> >> case BUG_TRAP_TYPE_BUG:
> >> die("Oops - BUG", regs, esr);
> >> - break;
> >>
> >> case BUG_TRAP_TYPE_WARN:
> >> break;
> >> --
> >> 2.43.0
> >>
> >
>
I see, I agree too.
Thanks.
Osama
© 2016 - 2025 Red Hat, Inc.