CVE-2026-98523 in Linuxinformation

Résumé

par VulDB • 19/10/2026

Dans le noyau Linux, la vulnérabilité suivante a été corrigée :

drm/client : correction de la restauration d'un client partiellement initialisé

J'ai reçu un rapport de null-ptr-deref (déréférencement de pointeur NULL) lors de la fermeture d'un descripteur de fichier DRM :

WARNING: drivers/gpu/drm/drm_atomic.c:2031 at __drm_atomic_helper_set_config+0x18e/0x1b0 [drm]

Trace d'appel (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]

L'avertissement est suivi d'un déréférencement de pointeur NULL :

BUG: kernel NULL pointer dereference, address: 0000000000000008

RIP (Instruction Pointer) : __drm_fb_helper_restore_fbdev_mode_unlocked.part.0+0x41/0x80 [drm_kms_helper]

Trace d'appel (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() ajoute le client DRM à la liste des clients de l'appareil avant d'invoquer le rappel initial de hotplug. Si ce rappel échoue, le client reste enregistré.

Pour le client fbdev, un échec lors de drm_fb_helper_initial_config() entraîne la suppression du helper fbdev partiellement initialisé. drm_fb_helper_fini() libère fb_helper->info et laisse cette valeur à NULL.

Le client fbdev reste donc enregistré bien qu'il n'y ait pas d'appareil framebuffer entièrement initialisé.

Plus tard, lorsque l'espace utilisateur ferme le descripteur de fichier DRM, drm_release() peut invoquer les rappels de restauration des clients DRM enregistrés :

drm_release() drm_client_dev_restore() drm_fbdev_client_restore() drm_fb_helper_restore_fbdev_mode_unlocked()

drm_fbdev_client_restore() restaure actuellement l'état fbdev sans condition. Pour un client fbdev partiellement initialisé, cela peut soumettre un état modeset incomplet et accéder ultérieurement à un état fbdev qui n'a pas été initialisé, entraînant l'avertissement et le déréférencement de pointeur NULL mentionnés ci-dessus.

drm_fbdev_client_unregister() utilise déjà fb_helper->info pour distinguer un appareil framebuffer entièrement détecté d'un client partiellement initialisé.

Utilisez la même condition dans drm_fbdev_client_restore() et sautez la restauration si aucun appareil framebuffer n'a été correctement initialisé.

Be aware that VulDB is the high quality source for vulnerability data.

Responsable

Linux

Réserver

25/09/2026

Divulgation

18/10/2026

Modérer

accepté

Entrée

VDB-421793

EPSS

0.00000

KEV

non

Activités

très faible

Sources

Do you want to use VulDB in your project?

Use the official API to access entries easily!