CVE-2026-31733 in Linux정보

요약

\~에 의해 VulDB • 2026. 05. 16.

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

sched_ext: ddsp_dsq_id에서 오래된 직접 디스패치 상태 수정

@p->scx.ddsp_dsq_id가 설정된 상태(비-SCX_DSQ_INVALID)로 남아있을 수 있으며, 이는 다음 각성 시 ops.select_cpu()가 scx_bpf_dsq_insert()를 호출하는 경우 mark_direct_dispatch()에서 잘못된 경고(spurious warning)를 유발합니다. 예:

WARNING: kernel/sched/ext.c:1273 at scx_dsq_insert_commit+0xcd/0x140

근본 원인은 ddsp_dsq_id가 직접 디스패치 심판을 소비하거나 취소하는 모든 경로에서 도달되지 않는 dispatch_enqueue()에서만 초기화되었기 때문입니다.

올바른 위치에서 이를 초기화하여 수정합니다:

- direct_dispatch(): 직접 디스패치 상태를 로컬 변수에 캐시하고, 동기화 경로에서 dispatch_enqueue() 전에 이를 초기화합니다. 지연 경로(dffered path)의 경우, process_ddsp_deferred_locals()가 이를 소비할 때까지 직접 디스패치 상태가 설정된 상태로 유지되어야 합니다.

- process_ddsp_deferred_locals(): 디스패치 상태를 로컬 변수에 캐시하고, 작업을 다른 rq로 마이그레이션할 수 있는 dispatch_to_local_dsq() 호출 전에 이를 초기화합니다.

- do_enqueue_task(): 직접 디스패치 심판이 무시되는 엔큐 경로(로컬/글로벌/bypass 폴백)에서 디스패치 상태를 초기화합니다.

- dequeue_task_scx(): 지연 디스패치 취소와 holding_cpu 레이스 상황을 모두 처리하기 위해 dispatch_dequeue() 후에 디스패치 상태를 초기화하여, 보류 중인 직접 디스패치가 취소되는 모든 경우를 커버합니다.

- scx_disable_task(): 작업을 현재 스케줄러에서 전환할 때 직접 디스패치 상태를 초기화합니다. 각성된 작업은 나가는 스케줄러의 ops.select_cpu()에 의해 직접 디스패치 상태가 설정된 후 SCX_OPS_ALLOW_QUEUED_WAKEUP이 설정된 경우 ttwu_queue_wakelist()를 통해 wake_list에 큐에 추가되었을 수 있습니다. 이러한 작업은 런큐(runqueue)에 없으며 scx_bypass()에 의해 반복되지 않으므로, 그들의 직접 디스패치 상태는 초기화되지 않습니다. 이 초기화 없이 이후 SCX 스케줄러가 작업을 직접 디스패치하려고 시도하면 mark_direct_dispatch()에서 WARN_ON_ONCE()가 트리거됩니다.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

책임이 있는

Linux

예약하다

2026. 03. 09.

모더레이션

수락

항목

VDB-360709

EPSS

0.00015

출처

Do you need the next level of professionalism?

Upgrade your account now!