CVE-2026-98523 in Linux
Zusammenfassung
von VulDB • 19.10.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
drm/client: Behebung der Wiederherstellung eines teilweise initialisierten Clients
Ich erhielt einen Bericht über eine NULL-Zeiger-Dereferenzierung (null-ptr-deref) beim Schließen einer DRM-Dateideskriptor:
WARNING: drivers/gpu/drm/drm_atomic.c:2031 at __drm_atomic_helper_set_config+0x18e/0x1b0 [drm]
Call Trace: drm_client_modeset_commit_atomic+0x16b/0x220 [drm]
drm_client_modeset_commit_locked+0x56/0x160 [drm]
drm_client_modeset_commit+0x21/0x40 [drm]
__drm_fb_helper_restore_fbdev_mode_unlocked.part.0+0x7b/0x80 drm_fbdev_client_restore+0xe/0x20 [drm_client_lib]
drm_client_dev_restore+0x9f/0xc0 [drm]
drm_release+0xc5/0xe0 [drm]
Der Warnung folgt eine NULL-Zeiger-Dereferenzierung:
BUG: kernel NULL pointer dereference, address: 0000000000000008
RIP: __drm_fb_helper_restore_fbdev_mode_unlocked.part.0+0x41/0x80 [drm_kms_helper]
Call Trace: drm_fbdev_client_restore+0xe/0x20 [drm_client_lib]
drm_client_dev_restore+0x9f/0xc0 [drm]
drm_release+0xc5/0xe0 [drm]
__fput+0xdc/0x2b0 __x64_sys_close+0x39/0x80 do_syscall_64+0x8d/0x460 entry_SYSCALL_64_after_hwframe+0x76/0x7e
drm_client_register() fügt den DRM-Client der Geräte-Clientsliste hinzu, bevor er den initialen Hotplug-Callback aufruft. Wenn der Hotplug-Callback fehlschlägt, bleibt der Client registriert.
Für den fbdev-Client führt ein Fehler während drm_fb_helper_initial_config() dazu, dass der teilweise initialisierte fbdev-Helfer bereinigt wird. drm_fb_helper_fini() gibt fb_helper->info frei und lässt ihn NULL.
Der fbdev-Client bleibt daher registriert, obwohl kein vollständig initialisiertes Framebuffer-Gerät vorhanden ist.
Später, wenn die Benutzerspace-Anwendung den DRM-Dateideskriptor schließt, kann drm_release() die Restore-Calls der registrierten DRM-Clients aufrufen:
drm_release() drm_client_dev_restore() drm_fbdev_client_restore() drm_fb_helper_restore_fbdev_mode_unlocked()
drm_fbdev_client_restore() stellt den fbdev-Status derzeit bedingungslos wieder her. Für einen teilweise initialisierten fbdev-Client kann dies zu einem unvollständigen Modeset-Zustand führen und anschließend auf nicht initialisierte fbdev-Daten zugreifen, was die oben genannte Warnung und NULL-Zeiger-Dereferenzierung zur Folge hat.
drm_fbdev_client_unregister() verwendet bereits fb_helper->info, um ein vollständig erkanntes Framebuffer-Gerät von einem teilweise initialisierten Client zu unterscheiden.
Verwenden Sie dieselbe Bedingung in drm_fbdev_client_restore(), und überspringen Sie die Wiederherstellung, wenn kein Framebuffer-Gerät erfolgreich initialisiert wurde.
If you want to get best quality of vulnerability data, you may have to visit VulDB.