svn commit: r329306 - in stable/11/sys: dev/mlx5/mlx5_ib ofed/drivers/infiniband/hw/mthca ofed/include/rdma

Hans Petter Selasky hselasky at FreeBSD.org
Thu Feb 15 09:04:07 UTC 2018


Author: hselasky
Date: Thu Feb 15 09:04:06 2018
New Revision: 329306
URL: https://svnweb.freebsd.org/changeset/base/329306

Log:
  MFC r325807:
  Make sure the ib_wr_opcode enum is signed by adding a negative dummy element.
  Different compilers may optimise the enum type in different ways. This ensures
  coherency when range checking the value of enums in ibcore.
  
  Sponsored by:	Mellanox Technologies

Modified:
  stable/11/sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
  stable/11/sys/ofed/drivers/infiniband/hw/mthca/mthca_qp.c
  stable/11/sys/ofed/include/rdma/ib_verbs.h
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c
==============================================================================
--- stable/11/sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c	Thu Feb 15 09:00:11 2018	(r329305)
+++ stable/11/sys/dev/mlx5/mlx5_ib/mlx5_ib_qp.c	Thu Feb 15 09:04:06 2018	(r329306)
@@ -2497,7 +2497,7 @@ int mlx5_ib_post_send(struct ib_qp *ibqp, struct ib_se
 	}
 
 	for (nreq = 0; wr; nreq++, wr = wr->next) {
-		if (unlikely(wr->opcode >= ARRAY_SIZE(mlx5_ib_opcode))) {
+		if (unlikely(wr->opcode < 0 || wr->opcode >= ARRAY_SIZE(mlx5_ib_opcode))) {
 			mlx5_ib_warn(dev, "Invalid opcode 0x%x\n", wr->opcode);
 			err = -EINVAL;
 			*bad_wr = wr;

Modified: stable/11/sys/ofed/drivers/infiniband/hw/mthca/mthca_qp.c
==============================================================================
--- stable/11/sys/ofed/drivers/infiniband/hw/mthca/mthca_qp.c	Thu Feb 15 09:00:11 2018	(r329305)
+++ stable/11/sys/ofed/drivers/infiniband/hw/mthca/mthca_qp.c	Thu Feb 15 09:04:06 2018	(r329306)
@@ -1765,7 +1765,7 @@ int mthca_tavor_post_send(struct ib_qp *ibqp, struct i
 
 		qp->wrid[ind] = wr->wr_id;
 
-		if (wr->opcode >= ARRAY_SIZE(mthca_opcode)) {
+		if (wr->opcode < 0 || wr->opcode >= ARRAY_SIZE(mthca_opcode)) {
 			mthca_err(dev, "opcode invalid\n");
 			err = -EINVAL;
 			*bad_wr = wr;

Modified: stable/11/sys/ofed/include/rdma/ib_verbs.h
==============================================================================
--- stable/11/sys/ofed/include/rdma/ib_verbs.h	Thu Feb 15 09:00:11 2018	(r329305)
+++ stable/11/sys/ofed/include/rdma/ib_verbs.h	Thu Feb 15 09:04:06 2018	(r329306)
@@ -1136,6 +1136,8 @@ enum ib_wr_opcode {
 	IB_WR_RESERVED8,
 	IB_WR_RESERVED9,
 	IB_WR_RESERVED10,
+
+	IB_WR_DUMMY = -1,	/* force enum type signed */
 };
 
 enum ib_send_flags {


More information about the svn-src-all mailing list