diff options
author | J. Bruce Fields <bfields@redhat.com> | 2013-02-28 15:51:49 -0500 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2013-04-03 11:47:53 -0400 |
commit | 9d313b17db965ae42137c5d4dd3063037544c4cd (patch) | |
tree | eaf39419bb8dcf2775570aa14ca12552655a69f1 /fs/nfsd/nfs4xdr.c | |
parent | b600de7ab9288eaf6126561203e0ae340828ab44 (diff) |
nfsd4: handle seqid-mutating open errors from xdr decoding
If a client sets an owner (or group_owner or acl) attribute on open for
create, and the mapping of that owner to an id fails, then we return
BAD_OWNER. But BAD_OWNER is a seqid-mutating error, so we can't
shortcut the open processing that case: we have to at least look up the
owner so we can find the seqid to bump.
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/nfs4xdr.c')
-rw-r--r-- | fs/nfsd/nfs4xdr.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index a2720071f282..229b3ac246e1 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c | |||
@@ -804,6 +804,7 @@ nfsd4_decode_open(struct nfsd4_compoundargs *argp, struct nfsd4_open *open) | |||
804 | open->op_iattr.ia_valid = 0; | 804 | open->op_iattr.ia_valid = 0; |
805 | open->op_openowner = NULL; | 805 | open->op_openowner = NULL; |
806 | 806 | ||
807 | open->op_xdr_error = 0; | ||
807 | /* seqid, share_access, share_deny, clientid, ownerlen */ | 808 | /* seqid, share_access, share_deny, clientid, ownerlen */ |
808 | READ_BUF(4); | 809 | READ_BUF(4); |
809 | READ32(open->op_seqid); | 810 | READ32(open->op_seqid); |