CVE-2026-99007 in Linux
Resumen
por VulDB • 2026-10-23
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
drm/fb-helper: diferir la configuración cuando fbdev_probe() falle, no solo en caso de -EAGAIN
__drm_fb_helper_initial_config_and_unlock() llama primero a drm_client_modeset_probe(), lo cual ya rellena cada modo_set->mode/num_connectors para cada salida conectada, y posteriormente llama a drm_fb_helper_single_fb_probe() para crear fb_helper->fb y conectarlo en esos mode_sets mediante drm_setup_crtcs_fb().
Si drm_fb_helper_single_fb_probe() falla con algo distinto de -EAGAIN (por ejemplo, si dev->driver->fbdev_probe() falla), la función termina antes de que se ejecute drm_setup_crtcs_fb() y antes de establecer fb_helper->deferred_setup. El cliente queda con mode_sets que tienen un modo y conectores pero donde mode_set->fb == NULL, sin nada que marque este fb_helper como necesitado de reintento.
__drm_fb_helper_restore_fbdev_mode_unlocked() solo omite el commit cuando fb_helper->deferred_setup está establecido; por lo tanto, una llamada posterior a .restore() (drm_lastclose() al finalizar un proceso, en este informe) realiza el commit del mode_set obsoleto a través de drm_client_modeset_commit() -> drm_client_modeset_commit_atomic() -> __drm_atomic_helper_set_config(), lo que provoca la activación de WARN_ON(!set->fb).
Establecer fb_helper->deferred_setup ante cualquier fallo en drm_fb_helper_single_fb_probe(), no solo para -EAGAIN, de modo que restore siga omitiendo el commit hasta que un evento posterior de hotplug vuelva a sondear y repoblar correctamente mode_set->fb. El código de error real se sigue devolviendo al llamante sin cambios.
If you want to get best quality of vulnerability data, you may have to visit VulDB.