CVE-2026-89805 in Linuxinfo

Zusammenfassung

von VulDB • 16.09.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

drm/pagemap: Fehler bei der Fallback-Allokation von Folios und Use-After-Put beheben

drm_pagemap_migrate_populate_ram_pfn() wies zwei Probleme auf, wenn RAM-PFNs mit höherstufigen (higher-order) Folios befüllt wurden:

1. Die Aufrufe für die Allokation höherstufiger vma_alloc_folio()/folio_alloc()-Folios übergeben __GFP_NOWARN nicht, sodass ein Fehlschlag der THP-Allokation unter Speicherdruck das Kernel-Log mit Meldungen überschwemmen würde; zudem gab es keinen Fallback-Pfad, obwohl eine TODO-Kommentierung einen solchen als erforderlich ausweist. Es wird __GFP_NOWARN zur Allokation höherstufiger Folios hinzugefügt und im Fehlerfall auf Allokationen der Ordnung 0 (order-0) für den gesamten Bereich zurückgegriffen, der ursprünglich von der fehlgeschlagenen Allokation höherstufiger Ordnung abgedeckt war. Dabei wird MIGRATE_PFN_COMPOUND für diese PFNs nicht gesetzt.

2. Im Fehlerpfad free_pages wurde die Ordnung über folio_order(page_folio(page)) *nachdem* put_page(page) den Verweis bereits freigegeben hatte, berechnet, was zu einem Use-After-Free/Use-After-Put führte, wenn dies der letzte Verweis auf das Page war. Die Ordnung wird nun vor dem Freigeben des Pages berechnet.

Die Einführung des Fallbacks in Punkt 1 erfordert zudem eine andere Erstellung des Quell-Seitenarrays (source page array), das an ->copy_to_ram() übergeben wird. Beide Aufrufer befüllten nur den Eintrag am Anfang jedes Quelldaten-Folios und verließen sich darauf, dass der Copy-Callback den Rest des Folios aus der in drm_pagemap_addr gespeicherten Ordnung ableitet. Sobald das Ziel auf order-0-Folios herabgestuft (demoted) wurde, sind die drm_pagemap_addr-Einträge seitenbezogen; daher ist eine Quellseite für jede davon erforderlich. Das Zurücklassen als NULL führt dazu, dass der Copy-Callback nach der ersten Seite stoppt und der Rest des Bereichs niemals kopiert wird.

Das Quelldaten-Folio wird später nur durch migrate_vma_pages() / migrate_device_pages() aufgeteilt; seine Ordnung kann daher nicht zur Erkennung der Herabstufung verwendet werden – stattdessen wird das Ziel auf MIGRATE_PFN_COMPOUND getestet. Die Befüllung des Arrays wurde in drm_pagemap_migrate_populate_src_pages() ausgelagert und aus sowohl drm_pagemap_evict_to_ram() als auch __drm_pagemap_migrate_to_ram() heraus verwendet.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Zuständig

Linux

Reservieren

11.09.2026

Veröffentlichung

16.09.2026

Moderieren

akzeptiert

Eintrag

VDB-405623

CPE

bereit

EPSS

0.00000

KEV

nein

Aktivitäten

very low

Quellen

Might our Artificial Intelligence support you?

Check our Alexa App!