2013-04-01 13:06:52

by fanchaoting

[permalink] [raw]
Subject: PATCH]nfsd: don't run get_file if nfs4_preprocess_stateid_op return error

we should return error status directly when
nfs4_preprocess_stateid_op return error.

Signed-off-by: fanchaoting <[email protected]>
---
fs/nfsd/nfs4proc.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
index ae73175..8288b08 100644
--- a/fs/nfsd/nfs4proc.c
+++ b/fs/nfsd/nfs4proc.c
@@ -931,14 +931,14 @@ nfsd4_write(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
nfs4_lock_state();
status = nfs4_preprocess_stateid_op(SVC_NET(rqstp),
cstate, stateid, WR_STATE, &filp);
- if (filp)
- get_file(filp);
- nfs4_unlock_state();
-
if (status) {
+ nfs4_unlock_state();
dprintk("NFSD: nfsd4_write: couldn't process stateid!\n");
return status;
}
+ if (filp)
+ get_file(filp);
+ nfs4_unlock_state();

cnt = write->wr_buflen;
write->wr_how_written = write->wr_stable_how;
--
1.7.1




2013-04-03 19:20:07

by J. Bruce Fields

[permalink] [raw]
Subject: Re: PATCH]nfsd: don't run get_file if nfs4_preprocess_stateid_op return error

Thanks, applying, and adding a cc: for stable.--b.

On Mon, Apr 01, 2013 at 09:07:22PM +0800, fanchaoting wrote:
> we should return error status directly when
> nfs4_preprocess_stateid_op return error.
>
> Signed-off-by: fanchaoting <[email protected]>
> ---
> fs/nfsd/nfs4proc.c | 8 ++++----
> 1 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
> index ae73175..8288b08 100644
> --- a/fs/nfsd/nfs4proc.c
> +++ b/fs/nfsd/nfs4proc.c
> @@ -931,14 +931,14 @@ nfsd4_write(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
> nfs4_lock_state();
> status = nfs4_preprocess_stateid_op(SVC_NET(rqstp),
> cstate, stateid, WR_STATE, &filp);
> - if (filp)
> - get_file(filp);
> - nfs4_unlock_state();
> -
> if (status) {
> + nfs4_unlock_state();
> dprintk("NFSD: nfsd4_write: couldn't process stateid!\n");
> return status;
> }
> + if (filp)
> + get_file(filp);
> + nfs4_unlock_state();
>
> cnt = write->wr_buflen;
> write->wr_how_written = write->wr_stable_how;
> --
> 1.7.1
>
>