Als Folgemaßnahme zu dem potenziell unangenehmen Fehler im Open-Source-NVIDIA-Treiber „Nouveau“ in Linux 6.3 gilt das Problem als gelöst und es steht ein Patch aus, der das Problem offenbar beheben soll.
Vor einigen Tagen wurde eine Warnung verschickt, die Verwendung von Nouveau auf der aktuellen stabilen Linux-6.3-Serie aufgrund eines Use-after-Free-Problems in diesem Kernel-Grafiktreiber zu vermeiden. Die Verwendung nach dem Freigeben kann zu einer Beschädigung des Kernel-Speichers führen und wiederum möglicherweise eine Beschädigung des Dateisystems oder andere Systemprobleme verursachen, ganz zu schweigen davon, dass es sich auch um ein mögliches Sicherheitsproblem handelt.
David Airlie von Red Hat glaubt, dass er das Problem nun aus dem Monat alten gelöst hat Fehlerbericht. Airlie hat gestern einen Patch als Lösungsvorschlag veröffentlicht. Bisher haben sowohl der Nouveau-Entwickler Karol Herbst von Red Hat als auch ein anderer Benutzer, der zuvor von diesem Problem geplagt wurde, darauf hingewiesen, dass das Use-After-Free-Problem nun vermieden wird.
Airlie erklärte es, als er den Patch auf dri-devel:
“Das scheint soll für immer existiert haben, ist aber jetzt offensichtlicher nach 9bff18d13473a9fdf81d5158248472a9d8ecf2bd (drm/ttm: Verwendung pro BO-Bereinigungsarbeiter)
Meine Analyse:
zwei Threads laufen, einer im IRQ, der den Zaun signalisiert, und in dma_fence_signal_timestamp_locked, das hat er habe die DMA_FENCE_FLAG_SIGNALLED_BIT-Einstellung vorgenommen, aber noch nicht die Rückrufe erreicht.Zweiter Thread in nouveau_cli_work_ready, wo er sieht, dass der Zaun signalisiert wird, also dann den Zaun platziert, das Objekt bereinigt und das Arbeitselement freigibt, was enthält den Rückruf.
Thread eins geht erneut und versucht, den Rückruf aufzurufen und verursacht die Verwendung nach dem Freigeben.
Vorgeschlagener Fix:
Sperren Sie den Fence-Signaled-Check in nouveau_cli_work_ready , sodass entweder die Rückrufe ausgeführt werden oder der Speicher freigegeben wird.“
Mit ein paar Codezeilen ist das Problem hoffentlich gelöst.
Im Moment befindet sich der Patch noch auf der Mailingliste, wird aber voraussichtlich für die nächste Runde von DRM-Fixes für den Mainline-Kernel eingesandt.