CVE-2026-89805 in Linuxinformação

Sumário

de VulDB • 17/09/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

drm/pagemap: Corrige o fallback de alocação de folio e o uso após liberação (use-after-put)

A função drm_pagemap_migrate_populate_ram_pfn() apresentava dois problemas ao popular os PFNs da RAM comfolios de ordem superior:

1. As chamadas vma_alloc_folio()/folio_alloc() de ordem superior não passavam __GFP_NOWARN, portanto uma falha na alocação do THP sob pressão de memória causaria spam no log do kernel, e não havia um caminho de fallback apesar de um comentário TODO indicar que era necessário. Adiciona-se __GFP_NOW_WARN à alocação de ordem superior e, em caso de falha, faz-se o fallback para alocações de ordem-0 para toda a faixa originalmente coberta pela alocação de ordem superior com falha, deixando MIGRATE_PFN_COMPOUND não definido (unset) para esses PFNs.

2. No caminho de erro free_pages, order era computado via folio_order(page_folio(page)) *depois* que put_page(page) já havia removido a referência, resultando em um use-after-free/put quando essa era a última referência na página. Computa-se o valor de order antes de liberar a página.

A introdução do fallback no item 1 também exige que o array de páginas fonte passado para ->copy_to_ram() seja construído diferentemente. Ambos os chamadores apenas populavam a entrada no início de cada folio fonte, confiando na callback de cópia para derivar o restante do folio da ordem registrada em drm_pagemap_addr correspondente. Uma vez que o destino foi degradado (demoted) parafolios de ordem-0, as entradas drm_pagemap_addr são por página; portanto, é necessária uma página fonte para cada uma delas; deixá-las como NULL faz com que a callback de cópia pare após a primeira página e o restante da faixa nunca seja copiado.

O folio fonte só é dividido posteriormente, por migrate_vma_pages() / migrate_device_pages(), então sua ordem não pode ser usada para detectar a degradação - testa-se o destino quanto à presença de MIGRATE_PFN_COMPOUND em vez disso. Fatora-se a população do array para drm_pagemap_migrate_populate_src_pages() e usa-a tanto em drm_pagemap_evict_to_ram() quanto em __drm_pagemap_migrate_to_ram().

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

Responsável

Linux

Reservar

11/09/2026

Divulgação

16/09/2026

Moderação

aceite

Entrada

VDB-405623

CPE

pronto

EPSS

0.00000

KEV

não

Atividades

muito baixo

Fontes

Interested in the pricing of exploits?

See the underground prices here!