🇰🇷 한글 설명
Linux 커널의 mm/swap 구성 요소에서 swap_reclaim_full_clusters 함수 실행 중 cond_resched()가 호출되지 않아 발생하는 소프트락업(softlockup) 취약점입니다. 대규모 메모리와 스왑 장치를 사용하는 환경에서 과도한 스왑 회수 작업이 수행될 때 CPU가 응답하지 않는 현상이 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터가 메모리를 정리하는 과정에서 너무 오랫동안 한 가지 작업에만 매달려 시스템이 일시적으로 멈추는 현상입니다. 이로 인해 시스템이 응답하지 않거나 먹통이 될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
mm/swap: add cond_resched() in swap_reclaim_full_clusters to prevent softlockup
We hit a real softlockup in an internal stress test environment. The
workload was LTP memory/swap stress on a large arm64 machine, with 320
CPUs, about 1TB memory and an 8.6GB swap device. The system was under
heavy load and the swap device had a large number of full clusters. The
softlockup was triggered during a stress test after about 3 days.
So, add periodic cond_resched() calls during large full_clusters
reclaim operations to prevent softlockup issues.
Detailed call trace as follow:
PID: 3817773 TASK: ffff0883bb28b780 CPU: 48 COMMAND: "kworker/48:7"
#0 [ffff800080183d10] __crash_kexec at ffffa4c1361e5de4
#1 [ffff800080183d90] panic at ffffa4c1360d5e9c
#2 [ffff800080183e20] watchdog_timer_fn at ffffa4c136231fa8
...
#16 [ffff8000c4ad3cb0] swap_cache_del_folio at ffffa4c1363e1614
#17 [ffff8000c4ad3ce0] __try_to_reclaim_swap at ffffa4c1363e4bfc
#18 [ffff8000c4ad3d40] swap_reclaim_full_clusters at ffffa4c1363e5474
#19 [ffff8000c4ad3da0] swap_reclaim_work at ffffa4c1363e550c
#20 [ffff8000c4ad3dc0] process_one_work at ffffa4c136102edc
#21 [ffff8000c4ad3e10] worker_thread at ffffa4c136103398
#22 [ffff8000c4ad3e70] kthread at ffffa4c13610d95c
📍 영향받는 시스템
대규모 CPU 및 메모리를 사용하는 arm64 기반 Linux 커널 시스템
⚔️ 공격 벡터
시스템에 과도한 메모리 및 스왑 부하를 유발하는 스트레스 테스트 또는 특정 워크로드 실행
🛡️ 대응 방법
해당 취약점이 해결된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 패치가 적용된 버전인지 배포판 보안 공지를 통해 확인