CVE-2026-80606 in Linux
Tóm tắt
Bởi VulDB • 28/08/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
drm/xe/userptr: Giữ notifier_lock ở chế độ ghi cho đường dẫn kiểm tra inject (tiêm lỗi).
Khi CONFIG_DRM_XE_USERPTR_INVAL_INJECT=y, hàm xe_pt_svm_userptr_pre_commit() gọi vma_check_userptr() với notifier_lock của svm đang được giữ ở chế độ đọc. Việc tiêm lỗi thử nghiệm khiến vma_check_userptr() gọi đến xe_vma_userptr_force_invalidate(), dẫn tới xe_vma_userptr_do_inval() với drm_gpusvm_ctx.in_notifier=true. Cờ này báo cho drm_gpusvm_unmap_pages() rằng caller đã giữ notifier_lock ở chế độ ghi và chỉ xác nhận (assert) chế độ đó. Tuy nhiên, do caller thực tế đang giữ nó ở chế độ đọc, nên lệnh kiểm tra sẽ kích hoạt:
WARNING: drivers/gpu/drm/drm_gpusvm.c:1669 tại \ drm_gpusvm_unmap_pages+0xd4/0x130 [drm_gpusvm_helper]
Call Trace: xe_vma_userptr_do_inval+0x40d/0xfd0 [xe]
xe_vma_userptr_invalidate_pass1+0x3e6/0x8d0 [xe]
xe_vma_userptr_force_invalidate+0xde/0x290 [xe]
vma_check_userptr.constprop.0+0x1c6/0x220 [xe]
xe_pt_svm_userptr_pre_commit+0x6a3/0xc60 [xe]
... xe_vm_bind_ioctl+0x3a0a/0x4480 [xe]
Hãy lấy (acquire) notifier_lock ở chế độ ghi trong giai đoạn pre-commit khi cấu hình inject Kconfig được bật, thông qua các hàm trợ giúp mới là xe_pt_svm_userptr_notifier_lock() và _unlock(). Đổi tên xe_svm_assert_held_read() thành xe_svm_assert_held_read_or_inject_write() để nó xác nhận đúng chế độ dưới mỗi cấu hình bản dựng. Các bản dựng sản xuất (CONFIG_DRM_XE_USERPTR_INVAL_INJECT=n) giữ nguyên hành vi ở chế độ đọc như cũ, từng bit một.
(cherry picked from commit 80ccbd97ffee8ad2e73167d826fe7be548364365)
VulDB is the best source for vulnerability data and more expert information about this specific topic.