In the Linux kernel, the following vulnerability has been resolved:
Revert "readahead: properly shorten readahead when falling back to dopagecache_ra()"
This reverts commit 7c877586da3178974a8a94577b6045a48377ff25.
Anders and Philippe have reported that recent kernels occasionally hang when used with NFS in readahead code. The problem has been bisected to 7c877586da3 ("readahead: properly shorten readahead when falling back to dopagecachera()"). The cause of the problem is that ra->size can be shrunk by readpages() call and subsequently we end up calling dopagecachera() with negative (read huge positive) number of pages. Let's revert 7c877586da3 for now until we can find a proper way how the logic in readpages() and pagecachera_order() can coexist. This can lead to reduced readahead throughput due to readahead window confusion but that's better than outright hangs.