Bug 2432358 (CVE-2025-71149)

Summary: CVE-2025-71149 kernel: io_uring/poll: correctly handle io_poll_add() return value on update
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security DevOps Team <prodsec-dev>
Status: NEW --- QA Contact:
Severity: low Docs Contact:
Priority: low    
Version: unspecifiedKeywords: Security
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
A logic flaw was found in the Linux kernel's io_uring poll handling. When using POLL_REMOVE to update events on a pending POLL_ADD request, if the update causes the poll to trigger, the completion queue entry (CQE) is lost and never posted to userspace. Additionally, successful completions are incorrectly overwritten with -ECANCELED, causing applications to receive wrong status codes.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description OSIDB Bzimport 2026-01-23 15:01:59 UTC
In the Linux kernel, the following vulnerability has been resolved:

io_uring/poll: correctly handle io_poll_add() return value on update

When the core of io_uring was updated to handle completions
consistently and with fixed return codes, the POLL_REMOVE opcode
with updates got slightly broken. If a POLL_ADD is pending and
then POLL_REMOVE is used to update the events of that request, if that
update causes the POLL_ADD to now trigger, then that completion is lost
and a CQE is never posted.

Additionally, ensure that if an update does cause an existing POLL_ADD
to complete, that the completion value isn't always overwritten with
-ECANCELED. For that case, whatever io_poll_add() set the value to
should just be retained.