diff options
author | J. Bruce Fields <bfields@citi.umich.edu> | 2009-02-21 16:32:28 -0500 |
---|---|---|
committer | J. Bruce Fields <bfields@citi.umich.edu> | 2009-03-18 17:38:37 -0400 |
commit | 7e0f7cf582abd6c85232331dfe726a4e4b0fd98e (patch) | |
tree | a6a8aa7d51538377df5e2ce076c347ccd63b6b5b /fs/nfsd/nfs4state.c | |
parent | 203a8c8e66278a5936a230edaac29017e50c88fb (diff) |
nfsd4: fail when delegreturn gets a non-delegation stateid
Previous cleanup reveals an obvious (though harmless) bug: when
delegreturn gets a stateid that isn't for a delegation, it should return
an error rather than doing nothing.
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Diffstat (limited to 'fs/nfsd/nfs4state.c')
-rw-r--r-- | fs/nfsd/nfs4state.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 3570a0d1133f..6ae28e606afc 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c | |||
@@ -2418,10 +2418,9 @@ nfsd4_delegreturn(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, | |||
2418 | status = nfserr_stale_stateid; | 2418 | status = nfserr_stale_stateid; |
2419 | if (STALE_STATEID(stateid)) | 2419 | if (STALE_STATEID(stateid)) |
2420 | goto out; | 2420 | goto out; |
2421 | status = nfs_ok; | 2421 | status = nfserr_bad_stateid; |
2422 | if (!is_delegation_stateid(stateid)) | 2422 | if (!is_delegation_stateid(stateid)) |
2423 | goto out; | 2423 | goto out; |
2424 | status = nfserr_bad_stateid; | ||
2425 | dp = find_delegation_stateid(inode, stateid); | 2424 | dp = find_delegation_stateid(inode, stateid); |
2426 | if (!dp) | 2425 | if (!dp) |
2427 | goto out; | 2426 | goto out; |