[PATCH] arm64/scs: Fix handling of advance_loc4

Pepper Gray hello at peppergray.xyz
Tue Mar 10 07:15:56 PDT 2026


DW_CFA_advance_loc4 is defined but no handler is implemented. Its
CFA opcode defaults to EDYNSCS_INVALID_CFA_OPCODE triggering an
error which wrongfully prevents modules from loading.

Signed-off-by: Pepper Gray <hello at peppergray.xyz>
---
 arch/arm64/kernel/pi/patch-scs.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/arch/arm64/kernel/pi/patch-scs.c b/arch/arm64/kernel/pi/patch-scs.c
index bbe7d30ed12b32..dac568e4a54f23 100644
--- a/arch/arm64/kernel/pi/patch-scs.c
+++ b/arch/arm64/kernel/pi/patch-scs.c
@@ -192,6 +192,14 @@ static int scs_handle_fde_frame(const struct
eh_frame *frame,
  size -= 2;
  break;

+ case DW_CFA_advance_loc4:
+ loc += *opcode++ * code_alignment_factor;
+ loc += (*opcode++ << 8) * code_alignment_factor;
+ loc += (*opcode++ << 16) * code_alignment_factor;
+ loc += (*opcode++ << 24) * code_alignment_factor;
+ size -= 4;
+ break;
+
  case DW_CFA_def_cfa:
  case DW_CFA_offset_extended:
  size = skip_xleb128(&opcode, size);



More information about the linux-arm-kernel mailing list