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
This commit is contained in:
Slava Shwartsman 2018-12-05 13:19:21 +00:00
parent 4b9b52a1bd
commit 475c8de7bf
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=341523

View File

@ -621,16 +621,19 @@ static int cma_acquire_dev(struct rdma_id_private *id_priv,
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;
}
}
}