Browse Source

IB/srpt: Do not accept invalid initiator port names

Make srpt_parse_i_port_id() return a negative value if hex2bin()
fails.

Fixes: commit a42d985bd5b2 ("ib_srpt: Initial SRP Target merge for v3.3-rc1")
Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Bart Van Assche 8 years ago
parent
commit
c70ca38960
1 changed files with 4 additions and 5 deletions
  1. 4 5
      drivers/infiniband/ulp/srpt/ib_srpt.c

+ 4 - 5
drivers/infiniband/ulp/srpt/ib_srpt.c

@@ -2777,7 +2777,7 @@ static int srpt_parse_i_port_id(u8 i_port_id[16], const char *name)
 {
 {
 	const char *p;
 	const char *p;
 	unsigned len, count, leading_zero_bytes;
 	unsigned len, count, leading_zero_bytes;
-	int ret, rc;
+	int ret;
 
 
 	p = name;
 	p = name;
 	if (strncasecmp(p, "0x", 2) == 0)
 	if (strncasecmp(p, "0x", 2) == 0)
@@ -2789,10 +2789,9 @@ static int srpt_parse_i_port_id(u8 i_port_id[16], const char *name)
 	count = min(len / 2, 16U);
 	count = min(len / 2, 16U);
 	leading_zero_bytes = 16 - count;
 	leading_zero_bytes = 16 - count;
 	memset(i_port_id, 0, leading_zero_bytes);
 	memset(i_port_id, 0, leading_zero_bytes);
-	rc = hex2bin(i_port_id + leading_zero_bytes, p, count);
-	if (rc < 0)
-		pr_debug("hex2bin failed for srpt_parse_i_port_id: %d\n", rc);
-	ret = 0;
+	ret = hex2bin(i_port_id + leading_zero_bytes, p, count);
+	if (ret < 0)
+		pr_debug("hex2bin failed for srpt_parse_i_port_id: %d\n", ret);
 out:
 out:
 	return ret;
 	return ret;
 }
 }