hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/infiniband/hw/mlx4/qp.c
....@@ -412,9 +412,13 @@
412412 struct mlx4_ib_qp *qp,
413413 struct mlx4_ib_create_qp *ucmd)
414414 {
415
+ u32 cnt;
416
+
415417 /* Sanity check SQ size before proceeding */
416
- if ((1 << ucmd->log_sq_bb_count) > dev->dev->caps.max_wqes ||
417
- ucmd->log_sq_stride >
418
+ if (check_shl_overflow(1, ucmd->log_sq_bb_count, &cnt) ||
419
+ cnt > dev->dev->caps.max_wqes)
420
+ return -EINVAL;
421
+ if (ucmd->log_sq_stride >
418422 ilog2(roundup_pow_of_two(dev->dev->caps.max_sq_desc_sz)) ||
419423 ucmd->log_sq_stride < MLX4_IB_MIN_SQ_STRIDE)
420424 return -EINVAL;
....@@ -526,15 +530,15 @@
526530 return (-EOPNOTSUPP);
527531 }
528532
529
- if (ucmd->rx_hash_fields_mask & ~(MLX4_IB_RX_HASH_SRC_IPV4 |
530
- MLX4_IB_RX_HASH_DST_IPV4 |
531
- MLX4_IB_RX_HASH_SRC_IPV6 |
532
- MLX4_IB_RX_HASH_DST_IPV6 |
533
- MLX4_IB_RX_HASH_SRC_PORT_TCP |
534
- MLX4_IB_RX_HASH_DST_PORT_TCP |
535
- MLX4_IB_RX_HASH_SRC_PORT_UDP |
536
- MLX4_IB_RX_HASH_DST_PORT_UDP |
537
- MLX4_IB_RX_HASH_INNER)) {
533
+ if (ucmd->rx_hash_fields_mask & ~(u64)(MLX4_IB_RX_HASH_SRC_IPV4 |
534
+ MLX4_IB_RX_HASH_DST_IPV4 |
535
+ MLX4_IB_RX_HASH_SRC_IPV6 |
536
+ MLX4_IB_RX_HASH_DST_IPV6 |
537
+ MLX4_IB_RX_HASH_SRC_PORT_TCP |
538
+ MLX4_IB_RX_HASH_DST_PORT_TCP |
539
+ MLX4_IB_RX_HASH_SRC_PORT_UDP |
540
+ MLX4_IB_RX_HASH_DST_PORT_UDP |
541
+ MLX4_IB_RX_HASH_INNER)) {
538542 pr_debug("RX Hash fields_mask has unsupported mask (0x%llx)\n",
539543 ucmd->rx_hash_fields_mask);
540544 return (-EOPNOTSUPP);