🇰🇷 한글 설명
Linux 커널의 mtk-star-emac 드라이버에서 rx/tx poll 중 DMA 인터럽트를 다시 활성화할 때 스핀락 재귀(spinlock recursion) 문제가 발생할 수 있습니다. 이로 인해 시스템이 교착 상태에 빠지거나 커널 패닉이 발생할 수 있으며, 이를 해결하기 위해 spin_lock_irqsave 및 spin_unlock_irqrestore를 사용하도록 수정되었습니다.
💡 쉬운 설명
네트워크 장치를 처리하는 과정에서 시스템이 스스로를 잠그는 무한 루프에 빠져 컴퓨터가 멈출 수 있는 결함입니다. 이를 방지하기 위해 잠금 방식을 더 안전한 방법으로 변경하여 문제를 해결했습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: ethernet: mtk-star-emac: fix spinlock recursion issues on rx/tx poll
Use spin_lock_irqsave and spin_unlock_irqrestore instead of spin_lock
and spin_unlock in mtk_star_emac driver to avoid spinlock recursion
occurrence that can happen when enabling the DMA interrupts again in
rx/tx poll.
```
BUG: spinlock recursion on CPU#0, swapper/0/0
lock: 0xffff00000db9cf20, .magic: dead4ead, .owner: swapper/0/0,
.owner_cpu: 0
CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted
6.15.0-rc2-next-20250417-00001-gf6a27738686c-dirty #28 PREEMPT
Hardware name: MediaTek MT8365 Open Platform EVK (DT)
Call trace:
show_stack+0x18/0x24 (C)
dump_stack_lvl+0x60/0x80
dump_stack+0x18/0x24
spin_dump+0x78/0x88
do_raw_spin_lock+0x11c/0x120
_raw_spin_lock+0x20/0x2c
mtk_star_handle_irq+0xc0/0x22c [mtk_star_emac]
__handle_irq_event_percpu+0x48/0x140
handle_irq_event+0x4c/0xb0
handle_fasteoi_irq+0xa0/0x1bc
handle_irq_desc+0x34/0x58
generic_handle_domain_irq+0x1c/0x28
gic_handle_irq+0x4c/0x120
do_interrupt_handler+0x50/0x84
el1_interrupt+0x34/0x68
el1h_64_irq_handler+0x18/0x24
el1h_64_irq+0x6c/0x70
regmap_mmio_read32le+0xc/0x20 (P)
_regmap_bus_reg_read+0x6c/0xac
_regmap_read+0x60/0xdc
regmap_read+0x4c/0x80
mtk_star_rx_poll+0x2f4/0x39c [mtk_star_emac]
__napi_poll+0x38/0x188
net_rx_action+0x164/0x2c0
handle_softirqs+0x100/0x244
__do_softirq+0x14/0x20
____do_softirq+0x10/0x20
call_on_irq_stack+0x24/0x64
do_softirq_own_stack+0x1c/0x40
__irq_exit_rcu+0xd4/0x10c
irq_exit_rcu+0x10/0x1c
el1_interrupt+0x38/0x68
el1h_64_irq_handler+0x18/0x24
el1h_64_irq+0x6c/0x70
cpuidle_enter_state+0xac/0x320 (P)
cpuidle_enter+0x38/0x50
do_idle+0x1e4/0x260
cpu_startup_entry+0x34/0x3c
rest_init+0xdc/0xe0
console_on_rootfs+0x0/0x6c
__primary_switched+0x88/0x90
```
📍 영향받는 시스템
Linux kernel (MediaTek MT8365 관련 mtk_star_emac 드라이버 사용 시스템)
⚔️ 공격 벡터
네트워크 트래픽을 유발하여 특정 인터럽트 상황을 만들어 시스템을 중단시키는 DoS(서비스 거부) 공격 가능성
🛡️ 대응 방법
mtk_star_emac 드라이버의 스핀락 구현이 수정된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 버전(6.15.0-rc2 이후 또는 배포판 보안 패치 적용 버전)인지 확인