drivers/infiniband/hw/bnxt_re/ib_verbs.c
  2817  int bnxt_re_dereg_mr(struct ib_mr *ib_mr)
  2818  {
  2819          struct bnxt_re_mr *mr = container_of(ib_mr, struct bnxt_re_mr, 
ib_mr);
  2820          struct bnxt_re_dev *rdev = mr->rdev;
  2821          int rc = 0;

It's weird that it would complain about this because initializing
variables to bogus values is a prefered style for some people.  It's
bad style obviously, yes, but it's common and it seems like it would
lead to a lot of false postives.

  2822  
  2823          if (mr->npages && mr->pages) {
  2824                  rc = 
bnxt_qplib_free_fast_reg_page_list(&rdev->qplib_res,
  2825                                                          
&mr->qplib_frpl);

And then it doesn't complain about this one which seems like a legit
bug.

  2826                  kfree(mr->pages);
  2827                  mr->npages = 0;
  2828                  mr->pages = NULL;
  2829          }
  2830          rc = bnxt_qplib_free_mrw(&rdev->qplib_res, &mr->qplib_mr);
  2831  
  2832          if (!IS_ERR(mr->ib_umem) && mr->ib_umem)
  2833                  ib_umem_release(mr->ib_umem);
  2834  
  2835          kfree(mr);
  2836          atomic_dec(&rdev->mr_count);
  2837          return rc;
  2838  }

regards,
dan carpenter

Reply via email to