On Mon, Jun 20, 2022 at 07:05:36PM +1000, Alistair Popple wrote: > Commit 793917d997df ("mm/readahead: Add large folio readahead") > introduced support for using large folios for filebacked pages if the > filesystem supports it. > > page_cache_ra_order() was introduced to allocate and add these large > folios to the page cache. However adding pages to the page cache should > be serialized against truncation and hole punching by taking > invalidate_lock. Not doing so can lead to data races resulting in stale > data getting added to the page cache and marked up-to-date. See commit > 730633f0b7f9 ("mm: Protect operations adding pages to page cache with > invalidate_lock") for more details. > > This issue was found by inspection but a testcase revealed it was > possible to observe in practice on XFS. Fix this by taking > invalidate_lock in page_cache_ra_order(), to mirror what is done for the > non-thp case in page_cache_ra_unbounded(). Thanks, added to pagecache:for-next and I'll be including it as part of the pull request for -rc4.