CVE-2026-89499: ring-buffer: Stop remote reader update when page swap fails
In the Linux kernel, the following vulnerability has been resolved:
ring-buffer: Stop remote reader update when page swap fails
The remote swapreaderpage callback can return -EBUSY when the writer moves the head before the remote catches it, particularly during an event storm on a small buffer. rbgetreaderpagefromremote() currently warns about that failure but continues with the unchanged reader ID and rearranges the local page list as though the swap succeeded.
Handle the callback failure as a recoverable error. Report it with prwarnratelimited() and return NULL. Callers already handle a NULL reader page as a failed attempt. This avoids splicing the same page as both the previous and new reader without flooding the log under contention.
Event History
Frequently Asked Questions
Which runtime conditions are most likely to trigger this issue?
The failure can occur when a remote reader races with a writer that moves the ring-buffer head first. The description specifically identifies event storms on small buffers as a situation where this is more likely.
What condition causes the unsafe page-list handling?
The remote swap_reader_page callback can return -EBUSY if the writer advances the head before the remote reader catches up. Previously, processing continued with an unchanged reader ID despite that failed swap, while rearranging the local page list as if the swap had succeeded.
How can an operator recognize that the relevant failure is occurring?
The failure path produces a warning when the remote page-swap callback fails. In the corrected behavior, the warning is rate-limited and the operation returns NULL, which callers already treat as a failed reader-page attempt.