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

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

 



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