CVE-2025-21664 in Linuxinformação

Sumário

de VulDB • 11/07/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

dm thin: fazer com que get_first_thin use a função list_first_or_null_rcu (segura para RCU)

A documentação em rculist.h explica a ausência de list_empty_rcu() e alerta os programadores contra confiar na sequência list_empty() -> list_first() em código seguro para RCU. Isso ocorre porque cada uma dessas funções realiza sua própria READ_ONCE() no cabeçalho da lista. Isso pode levar a uma situação em que list_empty() vê um elemento válido na lista, mas o subsequente list_first() vê uma visão diferente do estado do cabeçalho da lista após uma modificação.

No caso de dm-thin, este autor teve uma caixa em produção travando devido a um erro GP (General Protection) no caminho process_deferred_bios. Esta função viu um cabeçalho de lista válido em get_first_thin(), mas quando posteriormente o desreferenciou e o converteu para thin_c, obteve o interior da struct pool, já que a lista estava agora vazia e referindo-se a si mesma. O kernel no qual isso ocorreu imprimiu tanto um aviso sobre refcount_t saturado quanto um erro UBSAN por acesso cpuid fora dos limites na spinlock enfileirada, antes do próprio falha. Ao examinar o kdump resultante, foi possível ver outro thread aguardando pacientemente em thin_dtr's synchronize_rcu.

A chamada thin_dtr conseguiu remover o thin_c da lista de thins ativos (e torná-lo a última entrada na lista active_thins) no momento exato errado, o que levou a este travamento.

Felizmente, a correção aqui é direta. Alterar a função get_first_thin() para usar list_first_or_null_rcu(), que realiza apenas uma única READ_ONCE() e retorna NULL se a lista já estiver vazia.

Isso foi executado contra as suítes de thin-provisioning do conjunto de testes devicemapper para delete (exclusão) e suspend (suspensão), sem regressões observadas.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Responsável

Linux

Reservar

29/12/2024

Divulgação

21/01/2025

Moderação

aceite

Entrada

VDB-292676

CPE

pronto

EPSS

0.00216

KEV

não

Atividades

muito baixo

Fontes

Do you want to use VulDB in your project?

Use the official API to access entries easily!