svn commit: r341523 - head/sys/ofed/drivers/infiniband/core
Slava Shwartsman
slavash at FreeBSD.org
Wed Dec 5 13:19:22 UTC 2018
Author: slavash
Date: Wed Dec 5 13:19:21 2018
New Revision: 341523
URL: https://svnweb.freebsd.org/changeset/base/341523
Log:
ibcore: Don't access invalid port.
The port number in the listen_id_priv has been observed to be zero which
means no port has been selected. The current code lacks a check for invalid
port number.
Submitted by: hselasky@
Approved by: hselasky (mentor)
MFC after: 1 week
Sponsored by: Mellanox Technologies
Modified:
head/sys/ofed/drivers/infiniband/core/ib_cma.c
Modified: head/sys/ofed/drivers/infiniband/core/ib_cma.c
==============================================================================
--- head/sys/ofed/drivers/infiniband/core/ib_cma.c Wed Dec 5 13:18:50 2018 (r341522)
+++ head/sys/ofed/drivers/infiniband/core/ib_cma.c Wed Dec 5 13:19:21 2018 (r341523)
@@ -621,16 +621,19 @@ static int cma_acquire_dev(struct rdma_id_private *id_
if (listen_id_priv) {
cma_dev = listen_id_priv->cma_dev;
port = listen_id_priv->id.port_num;
- gidp = rdma_protocol_roce(cma_dev->device, port) ?
- &iboe_gid : &gid;
- ret = cma_validate_port(cma_dev->device, port,
- rdma_protocol_ib(cma_dev->device, port) ?
- IB_GID_TYPE_IB :
- listen_id_priv->gid_type, gidp, dev_addr);
- if (!ret) {
- id_priv->id.port_num = port;
- goto out;
+ if (rdma_is_port_valid(cma_dev->device, port)) {
+ gidp = rdma_protocol_roce(cma_dev->device, port) ?
+ &iboe_gid : &gid;
+
+ ret = cma_validate_port(cma_dev->device, port,
+ rdma_protocol_ib(cma_dev->device, port) ?
+ IB_GID_TYPE_IB :
+ listen_id_priv->gid_type, gidp, dev_addr);
+ if (!ret) {
+ id_priv->id.port_num = port;
+ goto out;
+ }
}
}
More information about the svn-src-all
mailing list