.. | .. |
---|
412 | 412 | struct mlx4_ib_qp *qp, |
---|
413 | 413 | struct mlx4_ib_create_qp *ucmd) |
---|
414 | 414 | { |
---|
| 415 | + u32 cnt; |
---|
| 416 | + |
---|
415 | 417 | /* 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 > |
---|
418 | 422 | ilog2(roundup_pow_of_two(dev->dev->caps.max_sq_desc_sz)) || |
---|
419 | 423 | ucmd->log_sq_stride < MLX4_IB_MIN_SQ_STRIDE) |
---|
420 | 424 | return -EINVAL; |
---|
.. | .. |
---|
526 | 530 | return (-EOPNOTSUPP); |
---|
527 | 531 | } |
---|
528 | 532 | |
---|
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)) { |
---|
538 | 542 | pr_debug("RX Hash fields_mask has unsupported mask (0x%llx)\n", |
---|
539 | 543 | ucmd->rx_hash_fields_mask); |
---|
540 | 544 | return (-EOPNOTSUPP); |
---|