In the Linux kernel, the following vulnerability has been resolved:
NFS: Fix a race when updating an existing write
After nfs_lock_and_join_requests() tests for whether the request is still attached to the mapping, nothing prevents a call to nfs_inode_remove_request() from succeeding until we actually lock the page group. The reason is that whoever called nfs_inode_remove_request() doesn't necessarily have a lock on the page group head.
So in order to avoid races, let's take the page group lock earlier in nfs_lock_and_join_requests(), and hold it across the removal of the request in nfs_inode_remove_request().
| Software | From | Fixed in |
|---|---|---|
| linux / linux_kernel | 4.14 | 5.10.242 |
| linux / linux_kernel | 5.11 | 5.15.191 |
| linux / linux_kernel | 5.16 | 6.1.150 |
| linux / linux_kernel | 6.2 | 6.6.104 |
| linux / linux_kernel | 6.7 | 6.12.44 |
| linux / linux_kernel | 6.13 | 6.16.4 |
| linux / linux_kernel | 6.17-rc1 | 6.17-rc1.x |
| linux / linux_kernel | 6.17-rc2 | 6.17-rc2.x |
| debian / debian_linux | 11.0 | 11.0.x |