| From c70ca38960399a63d5c048b7b700612ea321d17e Mon Sep 17 00:00:00 2001 |
| From: Bart Van Assche <bart.vanassche@wdc.com> |
| Date: Wed, 11 Oct 2017 10:27:22 -0700 |
| Subject: IB/srpt: Do not accept invalid initiator port names |
| |
| From: Bart Van Assche <bart.vanassche@wdc.com> |
| |
| commit c70ca38960399a63d5c048b7b700612ea321d17e upstream. |
| |
| 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> |
| Signed-off-by: Doug Ledford <dledford@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/infiniband/ulp/srpt/ib_srpt.c | 9 ++++----- |
| 1 file changed, 4 insertions(+), 5 deletions(-) |
| |
| --- a/drivers/infiniband/ulp/srpt/ib_srpt.c |
| +++ b/drivers/infiniband/ulp/srpt/ib_srpt.c |
| @@ -3522,7 +3522,7 @@ static int srpt_parse_i_port_id(u8 i_por |
| { |
| const char *p; |
| unsigned len, count, leading_zero_bytes; |
| - int ret, rc; |
| + int ret; |
| |
| p = name; |
| if (strncasecmp(p, "0x", 2) == 0) |
| @@ -3534,10 +3534,9 @@ static int srpt_parse_i_port_id(u8 i_por |
| count = min(len / 2, 16U); |
| leading_zero_bytes = 16 - count; |
| 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: |
| return ret; |
| } |