2013-01-04 11:00:08

by Yanchuan Nian

[permalink] [raw]
Subject: [PATCH] pnfsd: Correct the buffer size of ds_list in dlm_device_entry

From: Yanchuan Nian <[email protected]>

In nfsd4_set_pnfs_dlm_device(), if there is a device with the same disk_name as
the new device, pnfsd will clear the memory of ds_list, and then update it with
ds list from the new device. The size of ds_list in struct dlm_device_entry is
NFSD_DLM_DS_LIST_MAX, but not DISK_NAME_LEN.

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

diff --git a/fs/nfsd/nfs4pnfsdlm.c b/fs/nfsd/nfs4pnfsdlm.c
index e8423e0..c138d41 100644
--- a/fs/nfsd/nfs4pnfsdlm.c
+++ b/fs/nfsd/nfs4pnfsdlm.c
@@ -187,7 +187,7 @@ nfsd4_set_pnfs_dlm_device(char *pnfs_dlm_device, int len)
dprintk("%s pnfs_dlm_device %s:%s already in cache "
" replace ds_list with new ds_list %s\n", __func__,
found->disk_name, found->ds_list, new->ds_list);
- memset(found->ds_list, 0, DISK_NAME_LEN);
+ memset(found->ds_list, 0, NFSD_DLM_DS_LIST_MAX);
memcpy(found->ds_list, new->ds_list, strlen(new->ds_list));
found->num_ds = new->num_ds;
kfree(new);
--
1.7.4.4



2013-01-07 13:20:06

by Benny Halevy

[permalink] [raw]
Subject: Re: [PATCH] pnfsd: Correct the buffer size of ds_list in dlm_device_entry

On Fri, Jan 4, 2013 at 12:43 PM, <[email protected]> wrote:
> From: Yanchuan Nian <[email protected]>
>
> In nfsd4_set_pnfs_dlm_device(), if there is a device with the same disk_name as
> the new device, pnfsd will clear the memory of ds_list, and then update it with
> ds list from the new device. The size of ds_list in struct dlm_device_entry is
> NFSD_DLM_DS_LIST_MAX, but not DISK_NAME_LEN.
>
> Signed-off-by: Yanchuan Nian <[email protected]>

Thanks. committed

Benny

> ---
> fs/nfsd/nfs4pnfsdlm.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/fs/nfsd/nfs4pnfsdlm.c b/fs/nfsd/nfs4pnfsdlm.c
> index e8423e0..c138d41 100644
> --- a/fs/nfsd/nfs4pnfsdlm.c
> +++ b/fs/nfsd/nfs4pnfsdlm.c
> @@ -187,7 +187,7 @@ nfsd4_set_pnfs_dlm_device(char *pnfs_dlm_device, int len)
> dprintk("%s pnfs_dlm_device %s:%s already in cache "
> " replace ds_list with new ds_list %s\n", __func__,
> found->disk_name, found->ds_list, new->ds_list);
> - memset(found->ds_list, 0, DISK_NAME_LEN);
> + memset(found->ds_list, 0, NFSD_DLM_DS_LIST_MAX);
> memcpy(found->ds_list, new->ds_list, strlen(new->ds_list));
> found->num_ds = new->num_ds;
> kfree(new);
> --
> 1.7.4.4
>