Hello Pradeep Satyanarayana,

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

The patch 68e995a29572: "IPoIB/cm: Add connected mode support for 
devices without SRQs" from Jan 25, 2008, leads to the following 
Smatch complaint:

drivers/infiniband/ulp/ipoib/ipoib_cm.c +684 ipoib_cm_handle_rx_wc()
         error: we previously assumed 'p' could be null (see line 611)

drivers/infiniband/ulp/ipoib/ipoib_cm.c
   610          if (unlikely(!(wr_id & IPOIB_CM_RX_UPDATE_MASK))) {
   611                  if (p && time_after_eq(jiffies, p->jiffies + 
IPOIB_CM_RX_UPDATE_TIME)) {
                            ^
Old check.  This was added in d6ef7d68 to fix a NULL deref that people
were hitting in production but the code has been rewritten since then
and I don't know if the check is still needed.

   612                          spin_lock_irqsave(&priv->lock, flags);
   613                          p->jiffies = jiffies;
   614                          /* Move this entry to list head, but do not 
re-add it
   615                           * if it has been moved out of list. */
   616                          if (p->state == IPOIB_CM_RX_LIVE)
   617                                  list_move(&p->list, 
&priv->cm.passive_ids);
   618                          spin_unlock_irqrestore(&priv->lock, flags);
   619                  }
   620          }
   621  
   622          if (wc->byte_len < IPOIB_CM_COPYBREAK) {

[snipped]

   674  repost:
   675          if (has_srq) {
   676                  if (unlikely(ipoib_cm_post_receive_srq(dev, wr_id)))
   677                          ipoib_warn(priv, "ipoib_cm_post_receive_srq 
failed "
   678                                     "for buf %d\n", wr_id);
   679          } else {
   680                  if (unlikely(ipoib_cm_post_receive_nonsrq(dev, p,
   681                                                            
&priv->cm.rx_wr,
   682                                                            
priv->cm.rx_sge,
   683                                                            wr_id))) {
   684                          --p->recv_count;
                                  ^^^
New dereference.

   685                          ipoib_warn(priv, "ipoib_cm_post_receive_nonsrq 
failed "
   686                                     "for buf %d\n", wr_id);

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

Reply via email to