diff options
Diffstat (limited to 'fs/nfsd/nfs4proc.c')
| -rw-r--r-- | fs/nfsd/nfs4proc.c | 15 | 
1 files changed, 8 insertions, 7 deletions
diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c index 2ed14dfd00a..987e719fbae 100644 --- a/fs/nfsd/nfs4proc.c +++ b/fs/nfsd/nfs4proc.c @@ -235,17 +235,17 @@ do_open_lookup(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_o  		 */  		if (open->op_createmode == NFS4_CREATE_EXCLUSIVE && status == 0)  			open->op_bmval[1] = (FATTR4_WORD1_TIME_ACCESS | -						FATTR4_WORD1_TIME_MODIFY); +							FATTR4_WORD1_TIME_MODIFY);  	} else {  		status = nfsd_lookup(rqstp, current_fh,  				     open->op_fname.data, open->op_fname.len, resfh);  		fh_unlock(current_fh); -		if (status) -			goto out; -		status = nfsd_check_obj_isreg(resfh);  	}  	if (status)  		goto out; +	status = nfsd_check_obj_isreg(resfh); +	if (status) +		goto out;  	if (is_create_with_attrs(open) && open->op_acl != NULL)  		do_set_nfs4_acl(rqstp, resfh, open->op_acl, open->op_bmval); @@ -841,6 +841,7 @@ nfsd4_setattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,  	      struct nfsd4_setattr *setattr)  {  	__be32 status = nfs_ok; +	int err;  	if (setattr->sa_iattr.ia_valid & ATTR_SIZE) {  		nfs4_lock_state(); @@ -852,9 +853,9 @@ nfsd4_setattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,  			return status;  		}  	} -	status = fh_want_write(&cstate->current_fh); -	if (status) -		return status; +	err = fh_want_write(&cstate->current_fh); +	if (err) +		return nfserrno(err);  	status = nfs_ok;  	status = check_attr_support(rqstp, cstate, setattr->sa_bmval,  |