Skip to contentSkip to conversation

mlx5: Add driver for Mellanox Connect-IB adapters

DISCUSSION Dan Carpenter 2 participants 2 messages Jun 20, 2014 – Jun 26, 2014 InfiniBand

lore
Share & tools
lore
#0 lore raw

Hello Eli Cohen,

This is a semi-automatic email about new static checker warnings.

The patch e126ba97dba9: "mlx5: Add driver for Mellanox Connect-IB adapters" from Jul 7, 2013, leads to the following Smatch complaint:

drivers/infiniband/hw/mlx5/qp.c:979 create_qp_common()

	 error: we previously assumed 'pd->uobject' could be null (see line 847)

drivers/infiniband/hw/mlx5/qp.c
846 if (pd) {

   847			if (pd->uobject) {
                            ^^^^^^^^^^^

There are a bunch of checks for pd->uobject.

   848				mlx5_ib_dbg(dev, "requested sq_wqe_count (%d)\n", ucmd.sq_wqe_count);
   849				if (ucmd.rq_wqe_shift != qp->rq.wqe_shift ||
   850				    ucmd.rq_wqe_count != qp->rq.wqe_cnt) {
   851					mlx5_ib_dbg(dev, "invalid rq params\n");
   852					return -EINVAL;
   853				}
   854				if (ucmd.sq_wqe_count > dev->mdev.caps.max_wqes) {
   855					mlx5_ib_dbg(dev, "requested sq_wqe_count (%d) > max allowed (%d)\n",

[ snip ]

971 qp->doorbell_qpn = swab32(qp->mqp.qpn << 8);
972
973 qp->mqp.event = mlx5_ib_qp_event;
974
975 return 0;
976
977 err_create:
978 if (qp->create_type == MLX5_QP_USER)

   979			destroy_qp_user(pd, qp);
                        ^^^^^^^^^^^^^^^

But we dereference it inside destroy_qp_user() unconditionally.

   980		else if (qp->create_type == MLX5_QP_KERNEL)
   981			destroy_qp_kernel(dev, qp);

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 10 lines · Dan Carpenter
   976	
   977	err_create:
   978		if (qp->create_type == MLX5_QP_USER)
   979			destroy_qp_user(pd, qp);
                        ^^^^^^^^^^^^^^^

But we dereference it inside destroy_qp_user() unconditionally.

   980		else if (qp->create_type == MLX5_QP_KERNEL)
   981			destroy_qp_kernel(dev, qp);

When we get here we already updated create_type and since all MLX5_QP_USER type QPs have PD the logic is not broken.
--
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