ring-buffer: Fix false warning in ring_buffer_map_get_reader()
Impact
In the Linux kernel, the following vulnerability has been resolved:
Source excerpt · LinuxWhat to do
Remove the caller's reader_page == commit_page check as well, since the reader-page helper already handles that case.
Affected packages
Affected products
Vendor version evidence. Product records are separate from automatic dependency matching.
Linux · Linux
Other versions: unaffected
| Version / range | Source status |
|---|---|
| 117c39200d9d760cbd5944bb89efb7b9c51965aa to before 029770f5badedc0f0ff85fc45e24785cbbee4a67 | affected |
| 117c39200d9d760cbd5944bb89efb7b9c51965aa to before 68e6ab180cfb6dfa79652f41ed7899a6d4cf5438 | affected |
| 117c39200d9d760cbd5944bb89efb7b9c51965aa to before 89bab1dba8a0167ef0d819e0f55b6bafa038e87f | affected |
Linux · Linux
Other versions: affected
| Version / range | Source status |
|---|---|
| 6.10 | affected |
| 0 to before 6.10 | unaffected |
| 6.18.59 through 6.18.* (inclusive) | unaffected |
| 7.2.13 through 7.2.* (inclusive) | unaffected |
| 7.3 through * (inclusive) | unaffected |
Original source description
In the Linux kernel, the following vulnerability has been resolved:
ring-buffer: Fix false warning in ring_buffer_map_get_reader()
The mmap reader can warn when it catches up with a writer that is still committing events. rb_get_reader_page() returns NULL in this case, but ring_buffer_map_get_reader() treats that result as an error.
The initial rb_per_cpu_empty() check filters out an empty buffer, but it does not guarantee that the next reader page has committed data. Writers do not take reader_lock and can advance commit_page before publishing the committed length on the new page. rb_get_reader_page() can swap to that page, catch up with the writer and return NULL.
Handle NULL through the existing no-data exit without warning. Remove the caller's reader_page == commit_page check as well, since the reader-page helper already handles that case. The existing metadata update and return path remain in place.