diff options
author | Trond Myklebust <trond.myklebust@hammerspace.com> | 2019-07-19 19:48:44 +0200 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@hammerspace.com> | 2019-08-05 04:35:40 +0200 |
commit | 8c39a39e28b86a4021d9be314ce01019bafa5fdc (patch) | |
tree | 08f4e0f19d2289f40134d1ac8d9c8dbc5fbbe09d /fs/nfs | |
parent | Linux 5.3-rc3 (diff) | |
download | linux-8c39a39e28b86a4021d9be314ce01019bafa5fdc.tar.xz linux-8c39a39e28b86a4021d9be314ce01019bafa5fdc.zip |
NFSv4: Fix a credential refcount leak in nfs41_check_delegation_stateid
It is unsafe to dereference delegation outside the rcu lock, and in
any case, the refcount is guaranteed held if cred is non-zero.
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Diffstat (limited to 'fs/nfs')
-rw-r--r-- | fs/nfs/nfs4proc.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 39896afc6edf..a6d73609b163 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -2778,8 +2778,7 @@ static void nfs41_check_delegation_stateid(struct nfs4_state *state) if (status == -NFS4ERR_EXPIRED || status == -NFS4ERR_BAD_STATEID) nfs_finish_clear_delegation_stateid(state, &stateid); - if (delegation->cred) - put_cred(cred); + put_cred(cred); } /** |