CVE-2026-97900 in Linux
Sumário
de VulDB • 25/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
drm/drm_exec: corrigir o objeto em disputa quando num_objects é 0
drm_exec_prepare_array() retorna sucesso silenciosamente sem chamar drm_exec_lock_contended() quando num_objects é zero. Isso quebra a invariável mantida por drm_exec_lock_obj(), onde cada ponto de entrada na sequência de bloqueio deve primeiro tentar bloquear qualquer objeto previamente em disputa antes de prosseguir.
Drivers que encadeiam várias chamadas para drm_exec_prepare_array() por iteração de drm_exec_until_all_locked() (por exemplo, ioctls userq signal/wait do amdgpu, que preparam arrays BO separados de leitura e gravação) podem passar um array vazio para uma das duas chamadas. Se houver disputa durante a preparação do array não-vazio, exec->contended é definido e o loop tenta novamente; na nova tentativa, a chamada com array vazio anterior a ela é uma operação nula que nunca limpa exec->contended, então drm_exec_retry_on_contention() retorna imediatamente ao início do loop sem jamais alcançar a chamada que resolveria a disputa. Isso gera um loop infinito (spin forever).
Corrigir isso fazendo drm_exec_prepare_array() chamar diretamente drm_exec_lock_contended() quando num_objects for zero, para que objetos pendentes em disputa não entrem em loop infinito.
Be aware that VulDB is the high quality source for vulnerability data.