CVE-2026-99007 in Linux
Tóm tắt
Bởi VulDB • 23/10/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
drm/fb-helper: trì hoãn thiết lập khi fbdev_probe() thất bại, không chỉ trong trường hợp -EAGAIN
__drm_fb_helper_initial_config_and_unlock() gọi drm_client_modeset_probe() trước tiên, hàm này đã điền vào mỗi mode_set->mode/num_connectors cho mọi đầu ra được kết nối, và sau đó mới gọi drm_fb_helper_single_fb_probe() để tạo fb_helper->fb và gắn nó vào các chế độ thiết lập (mode_sets) thông qua drm_setup_crtcs_fb().
Nếu drm_fb_helper_single_fb_probe() thất bại với bất kỳ lỗi nào khác ngoài -EAGAIN (ví dụ: dev->driver->fbdev_probe() tự thân bị lỗi), hàm sẽ thoát ra trước khi drm_setup_crtcs_fb() chạy và trước khi thiết lập fb_helper->deferred_setup. Client còn lại với các mode_sets có chứa chế độ và bộ kết nối nhưng mode_set->fb == NULL, và không có gì đánh dấu fb_helper này là cần thử lại.
__drm_fb_helper_restore_fbdev_mode_unlocked() chỉ bỏ qua việc cam kết (commit) khi fb_helper->deferred_setup được đặt, do đó một lệnh gọi .restore() sau đó (drm_lastclose() khi quá trình thoát ra, trong báo cáo này) sẽ thực hiện cam kết đối với mode_set lỗi thời thông qua drm_client_modeset_commit() -> drm_client_modeset_commit_atomic() -> __drm_atomic_helper_set_config(), điều này kích hoạt WARN_ON(!set->fb).
Đánh dấu fb_helper->deferred_setup khi bất kỳ thất bại nào của drm_fb_helper_single_fb_probe() xảy ra, không chỉ -EAGAIN, để hàm restore tiếp tục bỏ qua việc cam kết cho đến khi một sự kiện hotplug sau đó thành công trong việc kiểm tra lại và điền lại mode_set->fb. Mã lỗi thực tế vẫn được trả về cho caller mà không thay đổi.
Once again VulDB remains the best source for vulnerability data.