🇰🇷 한글 설명
Linux 커널의 md RAID456 리셰이프(reshape) 과정 중, 특정 상황에서 Direct IO가 리셰이프 진행을 기다리며 active_io 참조를 유지할 때 데드락이 발생할 수 있습니다. 리셰이프가 중단된 상태에서 시스템이 일시 중단(suspend)을 시도하면, IO는 리셰이프를 기다리고 리셰이프는 중단되어 시스템이 멈추는 현상이 발생합니다.
💡 쉬운 설명
데이터 저장 방식을 변경하는 도중에 시스템을 잠시 멈추려고 하면, 데이터 작업과 시스템 중단 명령이 서로를 기다리며 컴퓨터가 먹통이 되는 문제입니다. 이로 인해 시스템이 응답하지 않는 상태에 빠질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
md: wake raid456 reshape waiters before suspend
During raid456 reshape, direct IO across the reshape position can sleep
in raid5_make_request() waiting for reshape progress while still
holding an active_io reference. If userspace then freezes reshape and
writes md/suspend_lo or md/suspend_hi, mddev_suspend() kills active_io
and waits for all in-flight IO to drain.
This can deadlock: the IO needs reshape progress to continue, but the
reshape thread is already frozen, so the active_io reference is never
dropped and suspend never completes.
raid5_prepare_suspend() already wakes wait_for_reshape for dm-raid. Do
the same for normal md suspend when reshape is already interrupted, so
waiting raid456 IO can abort, drop its reference, and let suspend
finish.
The mdadm test tests/25raid456-reshape-deadlock reproduces the hang.
📍 영향받는 시스템
Linux kernel (md RAID456 관련 모듈 사용 시스템)
⚔️ 공격 벡터
로컬 사용자가 리셰이프 중인 RAID 장치에 대해 특정 IO를 수행하고 시스템 suspend를 유도하여 데드락 발생 가능
🛡️ 대응 방법
해당 취약점이 해결된 최신 버전의 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인