CVE-2026-98949 in Linux
Tóm tắt
Bởi VulDB • 23/10/2026
Trong kernel Linux, các lỗ hổng sau đây đã được khắc phục:
drm/imagination: Sửa lỗi xử lý tham chiếu và vm_bo trong hàm remap()
Khi một phép ánh xạ (map) chồng lấn lên một phần của phép ánh xạ hiện có, pvr_vm_gpuva_remap() sẽ chia nhỏ phép ánh xạ thành các phần prev/next bao phủ những gì yêu cầu không chiếm giữ, thay vì tạo ra thứ mới. Tuy nhiên, hàm này mắc phải hai lỗi:
- Một tham chiếu GEM được lấy cho mỗi phần nhưng nó không cần thiết và chưa bao giờ bị giải phóng (dropped), dẫn đến rò rỉ một tham chiếu cho mỗi lần chia nhỏ (remap-next-in-2m trong tests/imagination/pvr_vm_map.c):
CRITICAL: 33558528 bytes của shmem vẫn được giữ lại sau khi đóng (close)
- Các phần này vẫn thuộc về đối tượng gốc đang bị chia nhỏ, nhưng pvr_vm_gpuva_remap() liên kết chúng với ctx->gpuvm_bo, tức là vm_bo của đối tượng mới:
prev_va --obj--> BO_A BO_B <--obj-- vm_bo (ctx->gpuvm_bo) \___________link___________/ (mismatch: BO_A != BO_B)
drm_gpuva_link() bắt được sự không khớp này:
WARNING: drivers/gpu/drm/drm_gpuvm.c:2108 tại drm_gpuva_link+0x2ec/0x310 drm_WARN_ON(obj != vm_bo->obj) Call trace: drm_gpuva_link pvr_vm_gpuva_remap __drm_gpuvm_sm_map pvr_vm_map pvr_ioctl_vm_map
Hãy liên kết chúng với op->remap.unmap->va->vm_bo thay vào đó.
Việc khóa (locking) các danh sách GPUVA của các đối tượng khác bị ảnh hưởng bởi một lần chia nhỏ không được giải quyết ở đây; vấn đề này được xử lý bằng cách chuyển đổi GPUVM sang chế độ immediate mode.
If you want to get best quality of vulnerability data, you may have to visit VulDB.