[PATCH] arm64: Remove unreachable break after die

Osama Abdelkader posted 1 patch 4 days, 23 hours ago
arch/arm64/kernel/traps.c | 1 -
1 file changed, 1 deletion(-)
[PATCH] arm64: Remove unreachable break after die
Posted by Osama Abdelkader 4 days, 23 hours ago
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
Re: [PATCH] arm64: Remove unreachable break after die
Posted by kernel test robot 3 days, 18 hours ago
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
Re: [PATCH] arm64: Remove unreachable break after die
Posted by Mark Rutland 4 days, 12 hours ago
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
>
Re: [PATCH] arm64: Remove unreachable break after die
Posted by Anshuman Khandual 3 days, 19 hours ago

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
>>
>
Re: [PATCH] arm64: Remove unreachable break after die
Posted by Osama Abdelkader 3 days, 5 hours ago
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