On 8/6/26 6:10 AM, Xie Yuanbin wrote:
> For the new version of the compilers, C code that does not explicitly
> declare the section attribute may be split into sections other than
> ".text", such as ".text.unlikely" and ".text.hot". If unwind is enabled,
> this will also split the ".ARM.exidx.text.*" sections.
> 
> As scripts/module.lds.S, ".text.[0-9a-zA-Z_]*" sections will be merged
> into ".text" section. However, ".ARM.exidx.text.*" sections will not be
> merged.
> 
> For the following module code, using the gcc-16 compiler and the
> latest linux-next code, will result in dump_stack() failure.
> ```c
> void noinline stack_func_issue(void)
> {
>       dump_stack();
>       pr_emerg("dump stack finish!\n");
> }
> EXPORT_SYMBOL(stack_func_issue);
> 
> static int __init mmodule_init(void)
> {
>       stack_func_issue();
>       return 0;
> }
> 
> module_init(mmodule_init);
> ```
> ```log
> root@(none):/# busybox/usr/bin/busybox insmod test2.ko
> [   10.846774] test: loading out-of-tree module taints kernel.
> [   10.851840] CPU: 0 UID: 0 PID: 93 Comm: busybox Tainted: G        W  O     
>    7.2.0-rc6-next-20260805-00002-g3d7269e6e98c #3 VOLUNTARY
> [   10.852350] Tainted: [W]=WARN, [O]=OOT_MODULE
> [   10.852405] Hardware name: Generic DT based system
> [   10.852516] Call trace:
> [   10.852939]  unwind_backtrace from show_stack+0x10/0x14
> [   10.853487]  show_stack from dump_stack_lvl+0x54/0x68
> [   10.853512]  dump_stack_lvl from stack_func_issue+0x8/0xc0 [test]
> [   10.854134] unwind: Index not found bf000008
> [   10.858157] dump stack finish!
> ```
> 
> Merge ".ARM.extab.text.[0-9a-z-A-Z_]*" sections into ".ARM.extab" section
> and merge ".ARM.exidx.text.[0-9a-z-A-Z_]*" sections into ".ARM.exidx"
> section to fix the issue.

A fix for this issue was posted previously:

https://lore.kernel.org/linux-modules/[email protected]/

-- 
Thanks,
Petr

Reply via email to