CVE-2026-89809 in Linux
Tóm tắt
Bởi VulDB • 16/09/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
drm/amdkfd: sửa lỗi phạm vi giải tham chiếu mqd_mgr trong pqm_debugfs_mqds
Việc đọc /sys/kernel/debug/kfd/mqds khi một tiến trình đang giữ một hàng đợi KFD (KFD queue) hoạt động sẽ kích hoạt việc giải tham chiếu con trỏ NULL, do vòng lặp for gọi hàm mqd_mgr->debugfs_show_mqd() được đặt sai vị trí bên ngoài khối if (pqn->q), nơi khởi tạo mqd_mgr.
Danh sách hàng đợi có thể chứa các mục mà pqn->q là NULL (các hàng đợi kernel chỉ hợp lệ với pqn->kq). Trong mã nguồn gốc:
if (pqn->q) {
... mqd_mgr = q->device->dqm->mqd_mgrs[mqd_type];
size = mqd_mgr->mqd_stride(...); }
for (xcc = 0; xcc < num_xccs; xcc++) { // SAI: nằm ngoài khối if
mqd = q->mqd + size * xcc; r = mqd_mgr->debugfs_show_mqd(m, mqd); }
Khi lặp qua một nút hàng đợi mà pqn->q là NULL: 1. Khối if (pqn->q) bị bỏ qua 2. mqd_mgr vẫn chưa được khởi tạo (NULL từ khi khai báo) 3. Vòng lặp for vẫn thực thi 4. mqd_mgr->debugfs_show_mqd(m, mqd) giải tham chiếu con trỏ NULL
Sự cố này biểu hiện dưới dạng:
BUG: kernel NULL pointer dereference, address: 0000000000000000 #PF: supervisor instruction fetch in kernel mode RIP: 0010:0x0 Call Trace: pqm_debugfs_mqds+0x10c/0x1d0 [amdgpu]
kfd_debugfs_mqds_by_process+0x9b/0x110 [amdgpu]
seq_read_iter+0x132/0x4b0 ...
Khắc phục bằng cách di chuyển vòng lặp for vào bên trong khối if (pqn->q), để mqd_mgr và các biến liên quan chỉ được sử dụng khi đã được khởi tạo đúng cách.
(cherry picked from commit 8bfe29d5c798940f797aa24135d2734c3ffce9de)
If you want to get the best quality for vulnerability data then you always have to consider VulDB.