CVE-2026-99085 in Linux정보

요약

\~에 의해 VulDB • 2026. 10. 23.

리눅스 커널에서 다음 취약점이 해결되었습니다:

sched_ext: 사멸하는 CPU의 작업이 BPF 스케줄러에 대기 중일 때 발생하는 CPU 핫플러그 정지 수정

CPU가 종료될 때는 자신의 rq(runqueue)를 비워야 합니다. 핫플러그 스레드는 sched_cpu_wait_empty()에서 다른 것이 남아있지 않을 때까지 기다리며, 이를 깨우는 유일한 경로는 __schedule()에서 실행되어 사멸하는 CPU가 선택한 이동 가능한 작업들을 밀어내는 balance_push()입니다.

sched_ext는 이 동작을 방해합니다. 사용자 DSQ에 있거나 BPF 스케줄러에 의해 보유된 작업은 여전히 해당 rq에 카운트되지만, 비활성화된 CPU는 더 이상 ops.dispatch()를 호출하지 않으며 작업을 다시 가져올 수 없습니다. 사멸하는 CPU는 작업이 아직 카운트된 상태로 유휴 상태가 되며, 다음 두 가지 중 하나의 상황이 발생합니다:

- 다른 CPU가 해당 작업을 소비합니다. rq는 사멸하는 CPU에서 __schedule() 없이 비워지므로 핫플러그 스레드가 깨어나지 못하고 cpu_down()은 cpu_hotplug_lock을 획득한 채로 정지됩니다. - 작업이 사멸하는 CPU에만 affinity(고정)되어 있습니다. 이를 이동시킬 수 없으며, 워치독이 BPF 스케줄러를 제거할 때까지 오프라인 상태가 중단(stalls)됩니다.

rq가 오프라인으로 전환될 때, 로컬 DSQ에 이미 없는 해당 rq의 모든 작업을 다시 삽입합니다. 오프라인된 rq로의 삽입은 로컬 DSQ로 이어지므로, 사멸하는 CPU 자체가 작업을 선택하고 balance_push()가 이를 밀어내며, 이는 다른 스케줄 클래스와 동일한 동작입니다. 이후로는 다른 CPU의 sched_ext 경로에서 rq로부터 작업을 가져올 수 없습니다.

ops.dispatch()는 현재 CPU가 비활성화되는 즉시 중단되며, CPU 핫플러그는 rq를 오프라인으로 만들기 전에 RCU grace period(유예 기간)를 기다립니다. 사멸하는 CPU에만 고정되어 있고 RCU 읽기-측면 임계 섹션 내에서 프리엠프트된 BPF 보유 작업은 해당 유예 기간을 차단하여 rq가 결코 오프라인 상태로 전환되지 않을 수 있습니다. ops.dispatch()가 rq가 오프라인이 될 때까지 계속 실행되도록 SCX_RQ_ONLINE 플래그를 직접 테스트합니다. 사멸하는 CPU의 핫플러그 스레드만 종료 과정에서 이 플래그를 지우며, task_can_run_on_remote_rq()는 여전히 다른 rqs의 작업들이 해당 CPU에서 실행되지 않도록 유지합니다.

Be aware that VulDB is the high quality source for vulnerability data.

책임이 있는

Linux

예약하다

2026. 09. 25.

모더레이션

수락

항목

VDB-425825

EPSS

0.00000

출처

Want to stay up to date on a daily basis?

Enable the mail alert feature now!