summaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorDaniel Jurgens <danielj@mellanox.com>2017-06-30 17:35:35 +0300
committerJames Morris <james.l.morris@oracle.com>2017-07-07 09:49:26 +1000
commit79d0636ac7f839d57680305a462f0d8ff9bb13ec (patch)
tree6893389e94fa681469cd5cc613aa01c05b2b9562 /drivers/infiniband
parentb5d0ebc99bf5d0801a5ecbe958caa3d68b8eaee8 (diff)
downloadblackbird-op-linux-79d0636ac7f839d57680305a462f0d8ff9bb13ec.tar.gz
blackbird-op-linux-79d0636ac7f839d57680305a462f0d8ff9bb13ec.zip
IB/core: Fix uninitialized variable use in check_qp_port_pkey_settings
Check the return value from get_pkey_and_subnet_prefix to prevent using uninitialized variables. Fixes: d291f1a65232 ("IB/core: Enforce PKey security on QPs") Signed-off-by: Daniel Jurgens <danielj@mellanox.com> Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Paul Moore <paul@paul-moore.com> Signed-off-by: James Morris <james.l.morris@oracle.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/core/security.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/drivers/infiniband/core/security.c b/drivers/infiniband/core/security.c
index 3e8c38953912..70ad19c4c73e 100644
--- a/drivers/infiniband/core/security.c
+++ b/drivers/infiniband/core/security.c
@@ -120,21 +120,25 @@ static int check_qp_port_pkey_settings(struct ib_ports_pkeys *pps,
return 0;
if (pps->main.state != IB_PORT_PKEY_NOT_VALID) {
- get_pkey_and_subnet_prefix(&pps->main,
- &pkey,
- &subnet_prefix);
+ ret = get_pkey_and_subnet_prefix(&pps->main,
+ &pkey,
+ &subnet_prefix);
+ if (ret)
+ return ret;
ret = enforce_qp_pkey_security(pkey,
subnet_prefix,
sec);
+ if (ret)
+ return ret;
}
- if (ret)
- return ret;
if (pps->alt.state != IB_PORT_PKEY_NOT_VALID) {
- get_pkey_and_subnet_prefix(&pps->alt,
- &pkey,
- &subnet_prefix);
+ ret = get_pkey_and_subnet_prefix(&pps->alt,
+ &pkey,
+ &subnet_prefix);
+ if (ret)
+ return ret;
ret = enforce_qp_pkey_security(pkey,
subnet_prefix,
OpenPOWER on IntegriCloud