NFS: assert rcu_read_lock is held in nfs_start_delegation_return_locked

And clean up the dereference of the delegation a bit.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
This commit is contained in:
Christoph Hellwig 2026-01-07 08:26:58 +01:00 committed by Anna Schumaker
parent 635879a427
commit 7c80c3b8c8

View File

@ -318,10 +318,14 @@ static struct nfs_delegation *
nfs_start_delegation_return_locked(struct nfs_inode *nfsi)
{
struct nfs_delegation *ret = NULL;
struct nfs_delegation *delegation = rcu_dereference(nfsi->delegation);
struct nfs_delegation *delegation;
lockdep_assert_in_rcu_read_lock();
delegation = rcu_dereference(nfsi->delegation);
if (!delegation)
return NULL;
if (delegation == NULL)
goto out;
spin_lock(&delegation->lock);
if (delegation->inode &&
!test_and_set_bit(NFS_DELEGATION_RETURNING, &delegation->flags)) {
@ -332,7 +336,6 @@ nfs_start_delegation_return_locked(struct nfs_inode *nfsi)
spin_unlock(&delegation->lock);
if (ret)
nfs_clear_verifier_delegated(&nfsi->vfs_inode);
out:
return ret;
}