From: Trond Myklebust Date: Thu, 27 Mar 2025 23:20:53 +0000 (-0400) Subject: NFSv4: Check for delegation validity in nfs_start_delegation_return_locked() X-Git-Tag: v6.15-rc1~50^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9e8f324bd44c1fe026b582b75213de4eccfa1163;p=thirdparty%2Flinux.git NFSv4: Check for delegation validity in nfs_start_delegation_return_locked() Check that the delegation is still attached after taking the spin lock in nfs_start_delegation_return_locked(). Signed-off-by: Trond Myklebust --- diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c index 325ba0663a6de..8bdbc4dca89ca 100644 --- a/fs/nfs/delegation.c +++ b/fs/nfs/delegation.c @@ -307,7 +307,8 @@ nfs_start_delegation_return_locked(struct nfs_inode *nfsi) if (delegation == NULL) goto out; spin_lock(&delegation->lock); - if (!test_and_set_bit(NFS_DELEGATION_RETURNING, &delegation->flags)) { + if (delegation->inode && + !test_and_set_bit(NFS_DELEGATION_RETURNING, &delegation->flags)) { clear_bit(NFS_DELEGATION_RETURN_DELAYED, &delegation->flags); /* Refcount matched in nfs_end_delegation_return() */ ret = nfs_get_delegation(delegation);