[bug report] net: mana: Add page pool for RX buffers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Haiyang Zhang,

The patch b1d13f7a3b53: "net: mana: Add page pool for RX buffers"
from Aug 4, 2023 (linux-next), leads to the following Smatch static
checker warning:

	drivers/net/ethernet/microsoft/mana/mana_en.c:1651 mana_process_rx_cqe()
	error: uninitialized symbol 'old_fp'.

drivers/net/ethernet/microsoft/mana/mana_en.c
    1592 static void mana_process_rx_cqe(struct mana_rxq *rxq, struct mana_cq *cq,
    1593                                 struct gdma_comp *cqe)
    1594 {
    1595         struct mana_rxcomp_oob *oob = (struct mana_rxcomp_oob *)cqe->cqe_data;
    1596         struct gdma_context *gc = rxq->gdma_rq->gdma_dev->gdma_context;
    1597         struct net_device *ndev = rxq->ndev;
    1598         struct mana_recv_buf_oob *rxbuf_oob;
    1599         struct mana_port_context *apc;
    1600         struct device *dev = gc->dev;
    1601         void *old_buf = NULL;
    1602         u32 curr, pktlen;
    1603         bool old_fp;
    1604 
    1605         apc = netdev_priv(ndev);
    1606 
    1607         switch (oob->cqe_hdr.cqe_type) {
    1608         case CQE_RX_OKAY:
    1609                 break;
    1610 
    1611         case CQE_RX_TRUNCATED:
    1612                 ++ndev->stats.rx_dropped;
    1613                 rxbuf_oob = &rxq->rx_oobs[rxq->buf_index];
    1614                 netdev_warn_once(ndev, "Dropped a truncated packet\n");
    1615                 goto drop;
    1616 
    1617         case CQE_RX_COALESCED_4:
    1618                 netdev_err(ndev, "RX coalescing is unsupported\n");
    1619                 apc->eth_stats.rx_coalesced_err++;
    1620                 return;
    1621 
    1622         case CQE_RX_OBJECT_FENCE:
    1623                 complete(&rxq->fence_event);
    1624                 return;
    1625 
    1626         default:
    1627                 netdev_err(ndev, "Unknown RX CQE type = %d\n",
    1628                            oob->cqe_hdr.cqe_type);
    1629                 apc->eth_stats.rx_cqe_unknown_type++;
    1630                 return;
    1631         }
    1632 
    1633         pktlen = oob->ppi[0].pkt_len;
    1634 
    1635         if (pktlen == 0) {
    1636                 /* data packets should never have packetlength of zero */
    1637                 netdev_err(ndev, "RX pkt len=0, rq=%u, cq=%u, rxobj=0x%llx\n",
    1638                            rxq->gdma_id, cq->gdma_id, rxq->rxobj);
    1639                 return;
    1640         }
    1641 
    1642         curr = rxq->buf_index;
    1643         rxbuf_oob = &rxq->rx_oobs[curr];
    1644         WARN_ON_ONCE(rxbuf_oob->wqe_inf.wqe_size_in_bu != 1);
    1645 
    1646         mana_refill_rx_oob(dev, rxq, rxbuf_oob, &old_buf, &old_fp);

If mana_get_rxfrag() fails then mana_refill_rx_oob() doesn't set *old_fp.


    1647 
    1648         /* Unsuccessful refill will have old_buf == NULL.
    1649          * In this case, mana_rx_skb() will drop the packet.
    1650          */
--> 1651         mana_rx_skb(old_buf, old_fp, oob, rxq);
    1652 
    1653 drop:
    1654         mana_move_wq_tail(rxq->gdma_rq, rxbuf_oob->wqe_inf.wqe_size_in_bu);
    1655 
    1656         mana_post_pkt_rxq(rxq);
    1657 }

regards,
dan carpenter



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux