2013-01-15 02:47:36

by Yanchuan Nian

[permalink] [raw]
Subject: [PATCH] pnfsd: Update the reference of nfs4_layout_state properly

From: Yanchuan Nian <[email protected]>

The reference of nfs4_layout_state is set to 1 when creating.
it isn't necessary to increase the reference again in
nfs4_process_layout_stateid(), otherwise it will lead to a
memory leak.

Signed-off-by: Yanchuan Nian <[email protected]>
---
fs/nfsd/nfs4pnfsd.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/nfsd/nfs4pnfsd.c b/fs/nfsd/nfs4pnfsd.c
index 2211b50..dd7856c 100644
--- a/fs/nfsd/nfs4pnfsd.c
+++ b/fs/nfsd/nfs4pnfsd.c
@@ -248,10 +248,10 @@ nfs4_process_layout_stateid(struct nfs4_client *clp, struct nfs4_file *fp,
status = nfserr_bad_stateid;
goto out;
}
+ get_layout_state(ls);
}
status = 0;

- get_layout_state(ls);
*lsp = ls;
dprintk("%s: layout stateid=" STATEID_FMT " ref=%d\n", __func__,
STATEID_VAL(&ls->ls_stid.sc_stateid), atomic_read(&ls->ls_ref.refcount));
--
1.7.4.4



2013-01-21 14:47:42

by Benny Halevy

[permalink] [raw]
Subject: Re: [PATCH] pnfsd: Update the reference of nfs4_layout_state properly

On 2013-01-15 04:37, [email protected] wrote:
> From: Yanchuan Nian <[email protected]>
>
> The reference of nfs4_layout_state is set to 1 when creating.
> it isn't necessary to increase the reference again in
> nfs4_process_layout_stateid(), otherwise it will lead to a
> memory leak.
>
> Signed-off-by: Yanchuan Nian <[email protected]>

Thanks. Committing for pnfs-all-3.7 and latest.

Benny

> ---
> fs/nfsd/nfs4pnfsd.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/fs/nfsd/nfs4pnfsd.c b/fs/nfsd/nfs4pnfsd.c
> index 2211b50..dd7856c 100644
> --- a/fs/nfsd/nfs4pnfsd.c
> +++ b/fs/nfsd/nfs4pnfsd.c
> @@ -248,10 +248,10 @@ nfs4_process_layout_stateid(struct nfs4_client *clp, struct nfs4_file *fp,
> status = nfserr_bad_stateid;
> goto out;
> }
> + get_layout_state(ls);
> }
> status = 0;
>
> - get_layout_state(ls);
> *lsp = ls;
> dprintk("%s: layout stateid=" STATEID_FMT " ref=%d\n", __func__,
> STATEID_VAL(&ls->ls_stid.sc_stateid), atomic_read(&ls->ls_ref.refcount));
>