Message ID | 20221215123030.155378-1-aleksei.kodanev@bell-sw.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | [rdma-next] RDMA/cxgb4: remove unnecessary NULL check in __c4iw_poll_cq_one() | expand |
On Thu, Dec 15, 2022 at 03:30:30PM +0300, Alexey Kodanev wrote: > If 'qhp' is NULL then 'wq' is also NULL: > > struct t4_wq *wq = qhp ? &qhp->wq : NULL; > ... > ret = poll_cq(wq, ...); > if (ret) > goto out; > > poll_cq(wq, ...) always returns a non-zero status if 'wq' is NULL, > either on a t4_next_cqe() error or on a 'wq == NULL' check. > > Therefore, checking 'qhp' again after poll_cq() is redundant. > > BTW, there're also 'qhp' dereference cases below poll_cq() without > any checks (c4iw_invalidate_mr(qhp->rhp,...)). > > Detected using the static analysis tool - Svace. > Fixes: 4ab39e2f98f2 ("RDMA/cxgb4: Make c4iw_poll_cq_one() easier to analyze") > Signed-off-by: Alexey Kodanev <aleksei.kodanev@bell-sw.com> > --- > drivers/infiniband/hw/cxgb4/cq.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > Let's wait till merge window ends. Thanks, Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
On Thu, 15 Dec 2022 15:30:30 +0300, Alexey Kodanev wrote: > If 'qhp' is NULL then 'wq' is also NULL: > > struct t4_wq *wq = qhp ? &qhp->wq : NULL; > ... > ret = poll_cq(wq, ...); > if (ret) > goto out; > > [...] Applied, thanks! [1/1] RDMA/cxgb4: remove unnecessary NULL check in __c4iw_poll_cq_one() https://git.kernel.org/rdma/rdma/c/cab30a98352511 Best regards,
diff --git a/drivers/infiniband/hw/cxgb4/cq.c b/drivers/infiniband/hw/cxgb4/cq.c index c7e8d7b3baa1..7e2835dcbc1c 100644 --- a/drivers/infiniband/hw/cxgb4/cq.c +++ b/drivers/infiniband/hw/cxgb4/cq.c @@ -767,7 +767,7 @@ static int __c4iw_poll_cq_one(struct c4iw_cq *chp, struct c4iw_qp *qhp, goto out; wc->wr_id = cookie; - wc->qp = qhp ? &qhp->ibqp : NULL; + wc->qp = &qhp->ibqp; wc->vendor_err = CQE_STATUS(&cqe); wc->wc_flags = 0;
If 'qhp' is NULL then 'wq' is also NULL: struct t4_wq *wq = qhp ? &qhp->wq : NULL; ... ret = poll_cq(wq, ...); if (ret) goto out; poll_cq(wq, ...) always returns a non-zero status if 'wq' is NULL, either on a t4_next_cqe() error or on a 'wq == NULL' check. Therefore, checking 'qhp' again after poll_cq() is redundant. BTW, there're also 'qhp' dereference cases below poll_cq() without any checks (c4iw_invalidate_mr(qhp->rhp,...)). Detected using the static analysis tool - Svace. Fixes: 4ab39e2f98f2 ("RDMA/cxgb4: Make c4iw_poll_cq_one() easier to analyze") Signed-off-by: Alexey Kodanev <aleksei.kodanev@bell-sw.com> --- drivers/infiniband/hw/cxgb4/cq.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)