You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AArch64内核模块修改SP指向全局结构触发栈溢出Panic求助

内核模块修改sp指向全局结构体触发栈溢出Panic问题

环境信息

  • 架构:AArch64
  • 设备:Pixel 8(shiba)
  • 系统:CallyxOS + AOSP内核,内核版本:5.15.137-android14-11-gbc062a78e195-ab12057991

需求

让sp寄存器指向模块中的全局结构体,将其作为栈内存使用。

现象

修改sp指向全局结构体并执行内存访问(如stp指令)时,立即触发kernel stack overflow内核Panic。

触发Panic的示例代码

mov x16, #0x12
    
mov x17, #0x34
    
mov x1, sp
    
ldr x0, =new_stack
    
mov sp, x0

stp x16, x17, [sp]      <---- KP HERE

mov sp, x1

内核Panic日志片段(/sys/fs/pstore/console-ramoops-0/RAMDUMP_MSG.txt)

reset message: KP: kernel stack overflow

UUID: a916fabb-7bb8-5a4e-aafa-7c7936d8d495

last kernel version: 5.15.137-android14-11-gb60f0c2a8346-ab12076200

aosp kernel version: 5.15.137-android14-11-gbc062a78e195-ab12057991

build: google/shiba/shiba:14/AP2A.240905.003/12231197:user/release-keys

RST_STAT: 0x80 - SYSTEM_SWRESET_SYSTEM

GSA_RESET_STATUS: 0x10 - GSA_INTERMEDIATE_RESET

Reboot reason: 0xbaba - Kernel PANIC

Reboot mode: 0x0 - Normal Boot

Stack backtrace:

Call trace:
  dump_backtrace+0xf8/0x1e8
  sched_show_task+0x1f0/0x328
  dbg_snapshot_dump_one_task_info+0x184/0x1a8 [dss]
  dbg_snapshot_dump_task_info+0xc4/0x128 [dss]
  dbg_snapshot_panic_handler+0x2dc/0x408 [dss]
  atomic_notifier_call_chain+0x84/0x128
  panic+0x1a8/0x430
  panic_bad_stack+0x1bc/0x1d8
  patch_alternative+0x0/0x114
  __bad_stack+0x8c/0x90
  execute+0x280/0x380 [revisor_executor]
  trace+0x2c/0x48 [revisor_executor]
  revisor_ioctl+0x1d0/0x210 [revisor_executor]
  __arm64_sys_ioctl+0x178/0x1f8
  invoke_syscall+0x58/0x138
  el0_svc_common+0xb0/0xe8
  do_el0_svc+0x20/0x7c
  el0_svc+0x28/0x9c
  el0t_64_sync_handler+0x7c/0xe4
  el0t_64_sync+0x1b4/0x1b8

已完成的检查

  • 确认sp寄存器已按16字节对齐
  • 使用其他寄存器(如x8)执行相同内存访问逻辑可正常运行

问题

推测sp存在有效指向范围,请问如何修改该范围?

内容的提问来源于stack exchange,提问作者Gal Kaptsenel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 00:23:21