diff options
author | J. Bruce Fields <bfields@citi.umich.edu> | 2009-02-21 22:32:28 +0100 |
---|---|---|
committer | J. Bruce Fields <bfields@citi.umich.edu> | 2009-03-18 22:38:37 +0100 |
commit | 7e0f7cf582abd6c85232331dfe726a4e4b0fd98e (patch) | |
tree | a6a8aa7d51538377df5e2ce076c347ccd63b6b5b /fs/nfsd | |
parent | nfsd4: separate delegreturn case from preprocess_stateid_op (diff) | |
download | linux-7e0f7cf582abd6c85232331dfe726a4e4b0fd98e.tar.xz linux-7e0f7cf582abd6c85232331dfe726a4e4b0fd98e.zip |
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')
-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, status = nfserr_stale_stateid; if (STALE_STATEID(stateid)) goto out; - status = nfs_ok; + status = nfserr_bad_stateid; if (!is_delegation_stateid(stateid)) goto out; - status = nfserr_bad_stateid; dp = find_delegation_stateid(inode, stateid); if (!dp) goto out; |