svn commit: r341859 - stable/12/sys/ofed/drivers/infiniband/core

Hans Petter Selasky hselasky at FreeBSD.org
Wed Dec 12 10:21:11 UTC 2018


Author: hselasky
Date: Wed Dec 12 10:21:10 2018
New Revision: 341859
URL: https://svnweb.freebsd.org/changeset/base/341859

Log:
  MFC r341523:
  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.
  
  Sponsored by:   Mellanox Technologies

Modified:
  stable/12/sys/ofed/drivers/infiniband/core/ib_cma.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/ofed/drivers/infiniband/core/ib_cma.c
==============================================================================
--- stable/12/sys/ofed/drivers/infiniband/core/ib_cma.c	Wed Dec 12 10:19:47 2018	(r341858)
+++ stable/12/sys/ofed/drivers/infiniband/core/ib_cma.c	Wed Dec 12 10:21:10 2018	(r341859)
@@ -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