Re: [PATCH] pnfsd: dlm: fix bug in DS tcp/tcp6 address string

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Benny, this patch does not fix the issue. Except that now all the
entries list "tcp6". Previously if you recall first data server entry
was correct but others listed tcp6 type with it was suppose to be tcp.

On Tue, Oct 18, 2011 at 8:52 PM, Benny Halevy <bhalevy@xxxxxxxxxx> wrote:
> squash into "pnfsd: Correctly set netid to tcp or tcp6 for non-local exports"
>
> Currently, the code looks for ':' using strcspn that requires a null terminated string
> while the address buffer isn't null terminated.
>
> Instead, just use strnchr to look for a ':' and if not found assume
> it's an IPv4 address, otherwise it's IPv6
>
> Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxx>
> ---
>  fs/nfsd/nfs4pnfsdlm.c |    9 ++-------
>  1 files changed, 2 insertions(+), 7 deletions(-)
>
> diff --git a/fs/nfsd/nfs4pnfsdlm.c b/fs/nfsd/nfs4pnfsdlm.c
> index abc4d83..d07a6037 100644
> --- a/fs/nfsd/nfs4pnfsdlm.c
> +++ b/fs/nfsd/nfs4pnfsdlm.c
> @@ -328,13 +328,8 @@ static int nfsd4_pnfs_dlm_getdevinfo(struct super_block *sb,
>                memcpy(daddr->r_addr.data + len, ".8.1", 4);
>                daddr->r_addr.len = len + 4;
>
> -               if (strcspn(daddr->r_addr.data, ":") - 1 == daddr->r_addr.len) {
> -                       daddr->r_netid.data = "tcp";
> -                       daddr->r_netid.len = 3;
> -               } else {
> -                       daddr->r_netid.data = "tcp6";
> -                       daddr->r_netid.len = 4;
> -               }
> +               daddr->r_netid.data = "tcp6";
> +               daddr->r_netid.len = strnchr(daddr->r_addr.data, len, ':') ? 4 : 3;
>
>                fdev.fl_device_list[i].fl_multipath_length = 1;
>                fdev.fl_device_list[i].fl_multipath_list = daddr;
> --
> 1.7.6
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux