In the Linux kernel, the following vulnerability has been resolved: netfs: Only call foliostartfscache() one time for each folio If a network filesystem using netfs implements a clamplength() function, it can set subrequest lengths smaller than a page size. When we loop through the folios in netfsrrequnlockfolios() to set any folios to be written back, we need to make sure we only call foliostartfscache() once for each folio. Otherwise, this simple testcase: mount -o fsc,rsize=1024,wsize=1024 127.0.0.1:/export /mnt/nfs dd if=/dev/zero of=/mnt/nfs/file.bin bs=4096 count=1 1+0 records in 1+0 records out 4096 bytes (4.1 kB, 4.0 KiB) copied, 0.0126359 s, 324 kB/s echo 3 > /proc/sys/vm/dropcaches cat /mnt/nfs/file.bin > /dev/null will trigger an oops similar to the following: page dumped because: VMBUGONFOLIO(foliotestprivate2(folio)) ------------[ cut here ]------------ kernel BUG at include/linux/netfs.h:44! ... CPU: 5 PID: 134 Comm: kworker/u16:5 Kdump: loaded Not tainted 6.4.0-rc5 ... RIP: 0010:netfsrrequnlockfolios+0x68e/0x730 [netfs] ... Call Trace: netfsrreqassess+0x497/0x660 [netfs] netfssubreqterminated+0x32b/0x610 [netfs] nfsnetfsreadcompletion+0x14e/0x1a0 [nfs] nfsreadcompletion+0x2f9/0x330 [nfs] rpcfreetask+0x72/0xa0 [sunrpc] rpcasyncrelease+0x46/0x70 [sunrpc] processonework+0x3bd/0x710 workerthread+0x89/0x610 kthread+0x181/0x1c0 retfromfork+0x29/0x50
{ "binaries": [ { "binary_name": "linux-buildinfo-6.5.0-1014-nvidia", "binary_version": "6.5.0-1014.14" }, { "binary_name": "linux-buildinfo-6.5.0-1014-nvidia-64k", "binary_version": "6.5.0-1014.14" }, { "binary_name": "linux-headers-6.5.0-1014-nvidia", "binary_version": "6.5.0-1014.14" }, { "binary_name": "linux-headers-6.5.0-1014-nvidia-64k", "binary_version": "6.5.0-1014.14" }, { "binary_name": "linux-image-unsigned-6.5.0-1014-nvidia", "binary_version": "6.5.0-1014.14" }, { "binary_name": "linux-image-unsigned-6.5.0-1014-nvidia-64k", "binary_version": "6.5.0-1014.14" }, { "binary_name": "linux-image-unsigned-6.5.0-1014-nvidia-64k-dbgsym", "binary_version": "6.5.0-1014.14" }, { "binary_name": "linux-image-unsigned-6.5.0-1014-nvidia-dbgsym", "binary_version": "6.5.0-1014.14" }, { "binary_name": "linux-modules-6.5.0-1014-nvidia", "binary_version": "6.5.0-1014.14" }, { "binary_name": "linux-modules-6.5.0-1014-nvidia-64k", "binary_version": "6.5.0-1014.14" }, { "binary_name": "linux-modules-extra-6.5.0-1014-nvidia", "binary_version": "6.5.0-1014.14" }, { "binary_name": "linux-modules-nvidia-fs-6.5.0-1014-nvidia", "binary_version": "6.5.0-1014.14" }, { "binary_name": "linux-modules-nvidia-fs-6.5.0-1014-nvidia-64k", "binary_version": "6.5.0-1014.14" }, { "binary_name": "linux-nvidia-6.5-headers-6.5.0-1014", "binary_version": "6.5.0-1014.14" }, { "binary_name": "linux-nvidia-6.5-tools-6.5.0-1014", "binary_version": "6.5.0-1014.14" }, { "binary_name": "linux-nvidia-6.5-tools-host", "binary_version": "6.5.0-1014.14" }, { "binary_name": "linux-tools-6.5.0-1014-nvidia", "binary_version": "6.5.0-1014.14" }, { "binary_name": "linux-tools-6.5.0-1014-nvidia-64k", "binary_version": "6.5.0-1014.14" } ], "availability": "No subscription required" }