🇰🇷 한글 설명
Linux 커널의 sched/deadline 스케줄러에서, 우선순위가 상승(boosted)된 태스크를 CPU affinity 변경 과정에서 재큐잉할 때 setup_new_dl_entity가 불필요하게 호출되어 커널 경고(WARN_ON)가 발생하는 문제입니다. 해당 태스크가 boosted 상태인지 확인하고 이 경우 해당 함수 호출을 건너뛰도록 수정되었습니다.
💡 쉬운 설명
실시간 작업 스케줄링 과정에서 커널이 잘못된 경고를 출력하는 버그입니다. 시스템 충돌이나 데이터 손실보다는 로그 오류와 불안정성을 유발하는 수준입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
sched/deadline: Fix warning in migrate_enable for boosted tasks
When running the following command:
while true; do
stress-ng --cyclic 30 --timeout 30s --minimize --quiet
done
a warning is eventually triggered:
WARNING: CPU: 43 PID: 2848 at kernel/sched/deadline.c:794
setup_new_dl_entity+0x13e/0x180
...
Call Trace:
<TASK>
? show_trace_log_lvl+0x1c4/0x2df
? enqueue_dl_entity+0x631/0x6e0
? setup_new_dl_entity+0x13e/0x180
? __warn+0x7e/0xd0
? report_bug+0x11a/0x1a0
? handle_bug+0x3c/0x70
? exc_invalid_op+0x14/0x70
? asm_exc_invalid_op+0x16/0x20
enqueue_dl_entity+0x631/0x6e0
enqueue_task_dl+0x7d/0x120
__do_set_cpus_allowed+0xe3/0x280
__set_cpus_allowed_ptr_locked+0x140/0x1d0
__set_cpus_allowed_ptr+0x54/0xa0
migrate_enable+0x7e/0x150
rt_spin_unlock+0x1c/0x90
group_send_sig_info+0xf7/0x1a0
? kill_pid_info+0x1f/0x1d0
kill_pid_info+0x78/0x1d0
kill_proc_info+0x5b/0x110
__x64_sys_kill+0x93/0xc0
do_syscall_64+0x5c/0xf0
entry_SYSCALL_64_after_hwframe+0x6e/0x76
RIP: 0033:0x7f0dab31f92b
This warning occurs because set_cpus_allowed dequeues and enqueues tasks
with the ENQUEUE_RESTORE flag set. If the task is boosted, the warning
is triggered. A boosted task already had its parameters set by
rt_mutex_setprio, and a new call to setup_new_dl_entity is unnecessary,
hence the WARN_ON call.
Check if we are requeueing a boosted task and avoid calling
setup_new_dl_entity if that's the case.
📍 영향받는 시스템
패치 이전의 Linux 커널 (sched/deadline 스케줄러를 사용하는 버전 전반)
⚔️ 공격 벡터
로컬 사용자가 SCHED_DEADLINE 태스크와 CPU affinity 변경, 시그널 전달을 반복 유발하여 커널 경고를 발생시킬 수 있음
🛡️ 대응 방법
배포판 제공 최신 커널로 업데이트하거나 upstream 수정이 포함된 커널로 재빌드 후 재부팅
🔧 검증 코드
출력된 커널 버전을 배포판의 보안 권고문에서 해당 CVE 수정 버전과 비교하여, 같거나 높으면 패치가 적용된 것입니다.