Skip to contentSkip to conversation

IB/mlx5: Support IB_WR_REG_SIG_MR

DISCUSSION Dan Carpenter 2 participants 2 messages Aug 12, 2015 InfiniBand

lore
Share & tools
lore
#0 lore raw

Hello Sagi Grimberg,

The patch e6631814fb3a: "IB/mlx5: Support IB_WR_REG_SIG_MR" from Feb 23, 2014, leads to the following static checker warning:

drivers/infiniband/ulp/ipoib/ipoib_cm.c:764 ipoib_cm_send()
warn: 'rc' can be either negative or positive

drivers/infiniband/hw/mlx5/qp.c
2417 static int set_psv_wr(struct ib_sig_domain *domain,
2418 u32 psv_idx, void **seg, int *size)
2419 {
2420 struct mlx5_seg_set_psv *psv_seg = *seg;
2421

  2422          memset(psv_seg, 0, sizeof(*psv_seg));
  2423          psv_seg->psv_num = cpu_to_be32(psv_idx);
  2424          switch (domain->sig_type) {
  2425          case IB_SIG_TYPE_NONE:

2426 break;
2427 case IB_SIG_TYPE_T10_DIF:
2428 psv_seg->transient_sig = cpu_to_be32(domain->sig.dif.bg << 16 |
2429 domain->sig.dif.app_tag);
2430 psv_seg->ref_tag = cpu_to_be32(domain->sig.dif.ref_tag);
2431 break;
2432 default:
2433 pr_err("Bad signature type given.\n");
2434 return 1;

Probably we should return -EINVAL here? It actually really upsets the static checker because all the callers expect negative error codes and there are lot of callers.

  2435          }
  2436  
  2437          *seg += sizeof(*psv_seg);
  2438          *size += sizeof(*psv_seg) / 16;
  2439  
  2440          return 0;
  2441  }

regards,
dan carpenter
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

#1 lore raw
Quoted 28 lines · Dan Carpenter

Hello Sagi Grimberg,

The patch e6631814fb3a: "IB/mlx5: Support IB_WR_REG_SIG_MR" from Feb 23, 2014, leads to the following static checker warning:

drivers/infiniband/ulp/ipoib/ipoib_cm.c:764 ipoib_cm_send()
warn: 'rc' can be either negative or positive

drivers/infiniband/hw/mlx5/qp.c
2417 static int set_psv_wr(struct ib_sig_domain *domain,
2418 u32 psv_idx, void **seg, int *size)

   2419  {
   2420          struct mlx5_seg_set_psv *psv_seg = *seg;
   2421
   2422          memset(psv_seg, 0, sizeof(*psv_seg));
   2423          psv_seg->psv_num = cpu_to_be32(psv_idx);
   2424          switch (domain->sig_type) {
   2425          case IB_SIG_TYPE_NONE:
   2426                  break;
   2427          case IB_SIG_TYPE_T10_DIF:
   2428                  psv_seg->transient_sig = cpu_to_be32(domain->sig.dif.bg << 16 |
   2429                                                       domain->sig.dif.app_tag);
   2430                  psv_seg->ref_tag = cpu_to_be32(domain->sig.dif.ref_tag);
   2431                  break;
   2432          default:
   2433                  pr_err("Bad signature type given.\n");
   2434                  return 1;
Quoted 3 lines

Probably we should return -EINVAL here? It actually really upsets the static checker because all the callers expect negative error codes and there are lot of callers.

I'll send out a fix for it.

Thanks Dan.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html