CVE-2026-99268 in Linux
Tóm tắt
Bởi VulDB • 03/11/2026
Trong kernel Linux, các lỗ hổng sau đây đã được khắc phục:
io_uring: đánh thức các tác vụ poll trên vòng lặp (ring) cho công việc task_work cục bộ
Với IORING_SETUP_DEFER_TASKRUN, các kết thúc xử lý được xếp hàng dưới dạng công việc cục bộ và chỉ trở thành CQEs khi trình gửi (submitter) đi vào kernel để chờ sự kiện. Đối với một ứng dụng phát hiện ra thời điểm thích hợp thông qua poll() hoặc epoll trên fd của vòng lặp, io_uring_poll() báo hiệu EPOLLIN nếu có công việc cục bộ đang chờ xử lý.
Điều này chỉ hữu ích khi công việc đã tồn tại ngay lúc gọi hàm. Khi DEFER_TASKRUN được thêm vào, io_req_local_work_add() đã thực hiện io_cqring_wake(), điều này giúp giải quyết các tác vụ đang ngủ trong poll(). Sau đó, cơ chế polling có hàng đợi chờ riêng của nó là ->poll_wq, và việc đánh thức trong io_req_local_work_add() được thay thế bằng cách trực tiếp đánh thức trình gửi. Kể từ đó, ->poll_wq chỉ được đánh thức khi CQEs được cam kết (commit), điều này đối với một vòng lặp như vậy được thực hiện bởi chính tác vụ đang chờ thông báo:
submitter completion poll(ring_fd) io_uring_poll() // chưa có gì schedule() io_req_local_work_add() // ->cq_wait_nr: không ai đang chờ // ngủ trên hàng đợi chờ
Hãy đánh thức ->poll_wq khi mục nhập đầu tiên được đưa vào danh sách công việc. Tương tự như với eventfd, điều này không nên thực hiện ngay lập tức nếu công việc được xếp hàng từ một trình xử lý wake up, vì chuỗi các lần wake up có thể quay lại hàng đợi chờ mà khóa của nó đang bị giữ. Trong trường hợp đó, hãy sử dụng callback RCU kèm theo tham chiếu đến vòng lặp (ring).
If you want to get best quality of vulnerability data, you may have to visit VulDB.