Files
linux-stable-mirror/include/linux
Trond MyklebustandGreg Kroah-Hartman 181feb41f0 NFS: Fix a race when updating an existing write
commit 76d2e3890f upstream.

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().

Reported-by: Jeff Layton <jlayton@kernel.org>
Tested-by: Joe Quanaim <jdq@meta.com>
Tested-by: Andrew Steffen <aksteffen@meta.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Fixes: bd37d6fce1 ("NFSv4: Convert nfs_lock_and_join_requests() to use nfs_page_find_head_request()")
Cc: stable@vger.kernel.org
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-09-04 15:30:20 +02:00
..
2025-05-09 09:43:58 +02:00
2024-07-25 09:50:47 +02:00
2024-10-04 16:29:59 +02:00
2024-07-05 09:34:04 +02:00
2024-12-14 19:59:58 +01:00
2024-08-29 17:33:31 +02:00
2025-07-06 11:00:16 +02:00
2025-02-08 09:52:02 +01:00
2025-01-09 13:31:41 +01:00
2025-04-25 10:45:31 +02:00
2025-08-15 12:08:42 +02:00
2025-01-23 17:21:12 +01:00
2025-01-09 13:31:41 +01:00
2025-02-01 18:37:51 +01:00
2025-02-27 04:10:50 -08:00
2024-08-29 17:33:23 +02:00
2025-08-01 09:47:30 +01:00
2024-10-17 15:24:23 +02:00
2025-05-22 14:12:12 +02:00
2024-11-08 16:28:26 +01:00