漏洞信息
# kexec: SMP停止调用异步化漏洞
## 概述
该漏洞存在于 Linux 内核中,涉及 ARM 平台的 `kexec` 功能。问题在于当系统处于 panic 状态并且由 hrtimer 中断触发时,在通知所有在线 CPU 并将其设置为离线的过程中,调用了同步方式的 `smp_call_function()`,而不是异步方式。
## 影响版本
问题在提交 `19dbdcb8039c`("smp: Warn on function calls from softirq context")前可能存在,该提交增加了对 softirq 上下文调用函数的警告。受影响的平台主要是 ARM。
## 细节
- 如果 `softdog` 触发 panic(由 hrtimer 中断调用 `softdog_fire()`),会调用 `smp_call_function()` 来通知 CPU 停止运行。
- 当前使用的是同步调用,这在中断被禁用的 softirq 上下文中是不安全的。
- 这会在 `smp_call_function_many_cond` 处触发警告:
```
WARNING: CPU: 1 PID: 0 at kernel/smp.c:753 smp_call_function_many_cond
```
## 影响
- 导致在 softirq 上下文中进行禁止的同步 SMP(多 CPU)调用。
- 提升了在系统 panic 或中断处理时触发 DEADLOCK 或不可预测行为的风险。
- 可能导致系统崩溃或内核无法正常执行 `kexec` 和 panic 处理流程。
提示
尽管我们采用了先进的大模型技术,但其输出仍可能包含不准确或过时的信息。
神龙会尽力确保数据准确,但也请结合实际情况进行甄别与判断。
神龙祝您一切顺利!
漏洞标题
ARM: 9317/1: kexec: Make smp stop calls asynchronous
漏洞描述信息
In the Linux kernel, the following vulnerability has been resolved:
ARM: 9317/1: kexec: Make smp stop calls asynchronous
If a panic is triggered by a hrtimer interrupt all online cpus will be
notified and set offline. But as highlighted by commit 19dbdcb8039c
("smp: Warn on function calls from softirq context") this call should
not be made synchronous with disabled interrupts:
softdog: Initiating panic
Kernel panic - not syncing: Software Watchdog Timer expired
WARNING: CPU: 1 PID: 0 at kernel/smp.c:753 smp_call_function_many_cond
unwind_backtrace:
show_stack
dump_stack_lvl
__warn
warn_slowpath_fmt
smp_call_function_many_cond
smp_call_function
crash_smp_send_stop.part.0
machine_crash_shutdown
__crash_kexec
panic
softdog_fire
__hrtimer_run_queues
hrtimer_interrupt
Make the smp call for machine_crash_nonpanic_core() asynchronous.
CVSS信息
N/A
漏洞类别
N/A
漏洞标题
Linux kernel 安全漏洞
漏洞描述信息
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于smp停止调用未采用异步方式,可能导致内核崩溃。
CVSS信息
N/A
漏洞类别
其他