I ran into exactly the same on a STM32MP157A-DK1 board (dual Cortex-A7,
ARMv7 AEABI, CONFIG_ARM_UNWIND=y).  An out-of-tree module whose functions
GCC had placed in .text.unlikely (merged into .text by module.lds.S) left
its .ARM.exidx.text.unlikely section unregistered, so an Oops inside the
module produced an empty backtrace:

  Call trace:
  unwind: Index not found bf102018

With this patch applied, the module's exidx is coalesced into a single
.ARM.exidx output section, module_finalize() registers it against .text,
and the full module backtrace is restored:

  Call trace:
   do_the_crash [oops_null] from level_one+0x8/0xc [oops_null]
   level_one [oops_null] from level_two+0x8/0xc [oops_null]
   level_two [oops_null] from trigger_write+0x18/0x20 [oops_null]
   trigger_write [oops_null] from full_proxy_write+0x54/0x78
   full_proxy_write from vfs_write+0xd0/0x49c
   vfs_write from ksys_write+0x6c/0xf4
   ksys_write from ret_fast_syscall+0x0/0x54

Tested on Linux 7.1.4

Tested-by: Ju Nan <[email protected]>


Reply via email to