🇰🇷 한글 설명
Linux 커널의 dm(Device Mapper) 계층에서 bio 폴링이 반복적으로 수행되어 RCU CPU 스톨을 유발할 수 있는 취약점이 해결되었습니다. dm-stripe 타겟에서 io_uring IOPOLL 사용 시, 폴링 작업이 너무 오래 지속되어 시스템 스케줄링을 방해할 수 있습니다. 이를 해결하기 위해 dm의 폴링을 단발성(one-shot)으로 제한하여 호출자가 중간에 스케줄링을 수행할 수 있도록 수정되었습니다.
💡 쉬운 설명
특정 데이터 처리 방식(io_uring)을 사용할 때, 컴퓨터의 핵심 관리 기능이 잠시 멈추는 현상이 발생할 수 있는 문제입니다. 시스템이 한 가지 작업에 너무 오래 매달려 다른 중요한 일을 처리하지 못하게 되는 상황을 방지하기 위한 패치입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
dm: limit target bio polling to one shot
dm_poll_bio() is the ->poll_bio() callback for a stacked dm device.
The caller only knows about the dm queue, so it may decide to do a
spinning poll if it thinks a single queue is being polled. Passing those
flags unchanged to the mapped clone lets blk_mq_poll() spin on a target
queue from inside dm_poll_bio().
With io_uring IOPOLL on a dm-stripe target this can keep a task in
dm_poll_bio() -> bio_poll() -> blk_mq_poll()
long enough to trigger an RCU CPU stall, before io_uring gets back to
io_iopoll_check() and its need_resched() check.
Keep dm's ->poll_bio() bounded by forcing one-shot polling for target
bios. The caller can invoke dm_poll_bio() again if it wants to keep
polling, and it also gets a chance to reap completions or reschedule
between passes.
📍 영향받는 시스템
Linux Kernel (dm-stripe 및 io_uring IOPOLL을 사용하는 환경)
⚔️ 공격 벡터
로컬 사용자가 io_uring IOPOLL을 사용하여 dm-stripe 타겟에 과도한 폴링을 유도함으로써 CPU 스톨 유발
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.