diff options
author | Trond Myklebust <trond.myklebust@hammerspace.com> | 2020-04-02 21:47:08 +0200 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@hammerspace.com> | 2020-04-04 00:29:10 +0200 |
commit | 97a728f5e2ad62a069dd395d3e516bb0acdbb3ec (patch) | |
tree | c240c8b8ca7f699643b626d3c7922b53b1ba3897 /fs/nfs/pnfs.c | |
parent | NFS: Beware when dereferencing the delegation cred (diff) | |
download | linux-97a728f5e2ad62a069dd395d3e516bb0acdbb3ec.tar.xz linux-97a728f5e2ad62a069dd395d3e516bb0acdbb3ec.zip |
NFS/pnfs: Fix dereference of layout cred in pnfs_layoutcommit_inode()
Ensure that the dereference of the layout cred is atomic with the
stateid.
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Diffstat (limited to 'fs/nfs/pnfs.c')
-rw-r--r-- | fs/nfs/pnfs.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c index 6fcf26b16816..84029c9b2b1b 100644 --- a/fs/nfs/pnfs.c +++ b/fs/nfs/pnfs.c @@ -3137,10 +3137,10 @@ pnfs_layoutcommit_inode(struct inode *inode, bool sync) end_pos = nfsi->layout->plh_lwb; nfs4_stateid_copy(&data->args.stateid, &nfsi->layout->plh_stateid); + data->cred = get_cred(nfsi->layout->plh_lc_cred); spin_unlock(&inode->i_lock); data->args.inode = inode; - data->cred = get_cred(nfsi->layout->plh_lc_cred); nfs_fattr_init(&data->fattr); data->args.bitmask = NFS_SERVER(inode)->cache_consistency_bitmask; data->res.fattr = &data->fattr; |