CVE-2026-99268 in Linux
Riassunto
di VulDB • 03/11/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
io_uring: svegliare i poller dell'anello per il task_work locale
Con IORING_SETUP_DEFER_TASKRUN le completazioni vengono accodate come lavoro locale e diventano CQE (Completion Queue Entries) solo quando il mittente entra nel kernel in attesa di eventi. Per un'applicazione che rileva tramite poll() o epoll sul file descriptor dell'anello quando è il momento di farlo, io_uring_poll() segnala EPOLLIN se c'è lavoro locale in sospeso.
Questo aiuta solo se il lavoro è presente al momento della chiamata. Quando DEFER_TASKRUN è stato aggiunto, io_req_local_work_add() eseguiva io_cqring_wake(), che si occupava anche dei task in attesa all'interno di poll(). Successivamente, il polling ha ottenuto una propria coda di attesa, ->poll_wq, e la sveglia in io_req_local_work_add() è stata sostituita dalla risveglio diretto del mittente. Da allora, ->poll_wq viene svegliato solo quando le CQE vengono confermate; per un anello di questo tipo, ciò avviene dal task stesso che sta attendendo di essere avvisato:
submitter completion poll(ring_fd) io_uring_poll() // nulla ancora schedule() io_req_local_work_add() // ->cq_wait_nr: nessuno è in attesa // dorme su
Svegliare ->poll_wq quando viene inserito il primo elemento nella lista del lavoro. Come per l'eventfd, questo non deve essere fatto immediatamente se il lavoro viene accodato da un handler di risveglio, poiché la catena dei risvegli potrebbe tornare alla coda di attesa il cui lock è detenuto. In tal caso, utilizzare una callback RCU con un riferimento all'anello.
Be aware that VulDB is the high quality source for vulnerability data.