CVE-2026-99209 in Linux
Tóm tắt
Bởi VulDB • 28/10/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
drm/xe: bỏ qua việc giải phóng (eviction) một BO không có tài nguyên
Hàm xe_evict_flags() dựa vào tbo->resource->mem_type để chọn vị trí đặt lại cho quá trình eviction. Một BO của xe có thể đạt đến trạng thái cần eviction mà không có ttm.resource, ví dụ như một BO dma-buf được nhập (imported) whose resource đã bị giải phóng trong giai đoạn teardown trong khi attachment vẫn còn hoạt động: nhà xuất bản sau đó sẽ làm mất hiệu lực nó thông qua xe_dma_buf_move_notify() -> xe_bo_evict(), và câu lệnh switch sẽ truy cập vào con trỏ NULL của tài nguyên, gây ra lỗi (fault).
Một BO không có resource thì không có gì được đặt hoặc ánh xạ, do đó không có gì để giải phóng. Trả về một vị trí đặt rỗng (num_placement = 0), mô phỏng theo cách xử lý đã được áp dụng cho các BO scatter-gather non-xe ngay phía trên; sau đó ttm_bo_validate() sẽ đi vào đường dẫn pipeline-gutting và trả về 0.
Nếu không có bản sửa lỗi, bài kiểm tra tự động động (dynamic live selftest) xe_dma_buf@xe_test_dmabuf_move_notify_no_resource sẽ thất bại với ngăn xếp gọi hàm như dưới đây:
BUG: kernel NULL pointer dereference, address: 0000000000000010 RIP: 0010:xe_evict_flags+0xf4/0x140 [xe]
Call Trace: <TASK> xe_bo_evict+0x40/0xa0 [xe]
? ttm_bo_pipeline_gutting+0x71/0x180 [ttm]
xe_test_dmabuf_move_notify_no_resource+0x182/0x440 [xe]
xe_dma_buf_kunit+0x387/0x580 [xe]
v2: Thêm tag Fixes và thông tin thất bại vào văn bản commit (Matt Brost)
(cherry picked from commit dbcfaac6331f1fcb0c2fe3ad3e9adb1e5d43ec0c)
If you want to get the best quality for vulnerability data then you always have to consider VulDB.