CC: [email protected] BCC: [email protected] CC: [email protected] TO: Harini Katakam <[email protected]> CC: Michal Simek <[email protected]> CC: Swati Agarwal <[email protected]> CC: Radhey Shyam Pandey <[email protected]>
tree: https://github.com/Xilinx/linux-xlnx xlnx_rebase_v5.15 head: aceb8dba4813e07934d2847fdaf8bdfaaf9f622c commit: 8bb7c59151794fc747f9e9faba7a0cec067a0252 [942/1024] net: axienet: Handle dma mapping errors in RX datapath :::::: branch date: 3 days ago :::::: commit date: 4 weeks ago config: ia64-randconfig-c004-20220324 (https://download.01.org/0day-ci/archive/20220327/[email protected]/config) compiler: ia64-linux-gcc (GCC) 11.2.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Julia Lawall <[email protected]> cocci warnings: (new ones prefixed by >>) >> drivers/net/ethernet/xilinx/xilinx_axienet_main.c:1641:17-20: ERROR: >> reference preceded by free on line 1618 vim +1641 drivers/net/ethernet/xilinx/xilinx_axienet_main.c 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1533 ee94241b2118ddd Saurabh Sengar 2021-01-22 1534 dma_unmap_single(ndev->dev.parent, cur_p->phys, ee94241b2118ddd Saurabh Sengar 2021-01-22 1535 lp->max_frm_size, 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1536 DMA_FROM_DEVICE); 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1537 ee94241b2118ddd Saurabh Sengar 2021-01-22 1538 skb = (struct sk_buff *)(cur_p->sw_id_offset); f6420dd2cc68a93 Appana Durga Kedareswara Rao 2020-01-24 1539 c8f87454e38ff93 Appana Durga Kedareswara Rao 2020-01-24 1540 if (lp->eth_hasnobuf || c8f87454e38ff93 Appana Durga Kedareswara Rao 2020-01-24 1541 lp->axienet_config->mactype != XAXIENET_1G) f6420dd2cc68a93 Appana Durga Kedareswara Rao 2020-01-24 1542 length = cur_p->status & XAXIDMA_BD_STS_ACTUAL_LEN_MASK; f6420dd2cc68a93 Appana Durga Kedareswara Rao 2020-01-24 1543 else 23e6b2dc93630b6 Robert Hancock 2019-06-06 1544 length = cur_p->app4 & 0x0000FFFF; 23e6b2dc93630b6 Robert Hancock 2019-06-06 1545 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1546 skb_put(skb, length); bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1547 #ifdef CONFIG_XILINX_AXI_EMAC_HWTSTAMP a7ae7ddafe91c16 Saurabh Sengar 2021-01-22 1548 if (!lp->is_tsn) { bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1549 if ((lp->tstamp_config.rx_filter == HWTSTAMP_FILTER_ALL || 146b2ba5b5d5e97 Harini Katakam 2021-01-22 1550 lp->eth_hasptp) && 146b2ba5b5d5e97 Harini Katakam 2021-01-22 1551 (lp->axienet_config->mactype != XAXIENET_10G_25G) && 146b2ba5b5d5e97 Harini Katakam 2021-01-22 1552 (lp->axienet_config->mactype != XAXIENET_MRMAC)) { bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1553 u32 sec, nsec; bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1554 u64 time64; bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1555 struct skb_shared_hwtstamps *shhwtstamps; bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1556 bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1557 if (lp->axienet_config->mactype == XAXIENET_1G || bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1558 lp->axienet_config->mactype == XAXIENET_2_5G) { bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1559 /* The first 8 bytes will be the timestamp */ bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1560 memcpy(&sec, &skb->data[0], 4); bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1561 memcpy(&nsec, &skb->data[4], 4); bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1562 bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1563 sec = cpu_to_be32(sec); bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1564 nsec = cpu_to_be32(nsec); bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1565 } else { bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1566 /* The first 8 bytes will be the timestamp */ bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1567 memcpy(&nsec, &skb->data[0], 4); bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1568 memcpy(&sec, &skb->data[4], 4); bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1569 } bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1570 bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1571 /* Remove these 8 bytes from the buffer */ bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1572 skb_pull(skb, 8); bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1573 time64 = sec * NS_PER_SEC + nsec; bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1574 shhwtstamps = skb_hwtstamps(skb); bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1575 shhwtstamps->hwtstamp = ns_to_ktime(time64); e74bff7aa33454c Harini Katakam 2021-01-22 1576 } else if (lp->axienet_config->mactype == XAXIENET_10G_25G || e74bff7aa33454c Harini Katakam 2021-01-22 1577 lp->axienet_config->mactype == XAXIENET_MRMAC) { bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1578 axienet_rx_hwtstamp(lp, skb); bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1579 } a7ae7ddafe91c16 Saurabh Sengar 2021-01-22 1580 } bf05571deda79b6 Appana Durga Kedareswara Rao 2020-01-24 1581 #endif 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1582 skb->protocol = eth_type_trans(skb, ndev); 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1583 /*skb_checksum_none_assert(skb);*/ 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1584 skb->ip_summed = CHECKSUM_NONE; 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1585 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1586 /* if we're doing Rx csum offload, set it up */ f6420dd2cc68a93 Appana Durga Kedareswara Rao 2020-01-24 1587 if (lp->features & XAE_FEATURE_FULL_RX_CSUM && c8f87454e38ff93 Appana Durga Kedareswara Rao 2020-01-24 1588 (lp->axienet_config->mactype == XAXIENET_1G) && f6420dd2cc68a93 Appana Durga Kedareswara Rao 2020-01-24 1589 !lp->eth_hasnobuf) { 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1590 csumstatus = (cur_p->app2 & 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1591 XAE_FULL_CSUM_STATUS_MASK) >> 3; 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1592 if ((csumstatus == XAE_IP_TCP_CSUM_VALIDATED) || 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1593 (csumstatus == XAE_IP_UDP_CSUM_VALIDATED)) { 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1594 skb->ip_summed = CHECKSUM_UNNECESSARY; 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1595 } 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1596 } else if ((lp->features & XAE_FEATURE_PARTIAL_RX_CSUM) != 0 && ceffc4acfc8c4cf Joe Perches 2014-03-12 1597 skb->protocol == htons(ETH_P_IP) && c8f87454e38ff93 Appana Durga Kedareswara Rao 2020-01-24 1598 skb->len > 64 && !lp->eth_hasnobuf && c8f87454e38ff93 Appana Durga Kedareswara Rao 2020-01-24 1599 (lp->axienet_config->mactype == XAXIENET_1G)) { 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1600 skb->csum = be32_to_cpu(cur_p->app3 & 0xFFFF); 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1601 skb->ip_summed = CHECKSUM_COMPLETE; 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1602 } 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 1603 #ifdef CONFIG_XILINX_TSN 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 1604 if (unlikely(q->flags & MCDMA_MGMT_CHAN)) { 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 1605 struct net_device *ndev = NULL; 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 1606 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 1607 /* received packet on mgmt channel */ 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 1608 if (q->flags & MCDMA_MGMT_CHAN_PORT0) 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 1609 ndev = lp->slaves[0]; 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 1610 else if (q->flags & MCDMA_MGMT_CHAN_PORT1) 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 1611 ndev = lp->slaves[1]; 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 1612 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 1613 /* send to one of the front panel port */ 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 1614 if (ndev && netif_running(ndev)) { 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 1615 skb->dev = ndev; 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 1616 netif_receive_skb(skb); 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 1617 } else { 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 @1618 kfree(skb); /* dont send up the stack */ 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 1619 } 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 1620 } else { 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 1621 netif_receive_skb(skb); /* send on normal data path */ 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 1622 } 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 1623 #else 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1624 ec9a60a97272571 Appana Durga Kedareswara Rao 2020-01-24 1625 netif_receive_skb(skb); 65f1c62ef6567bb Pranavi Somisetty 2021-01-22 1626 #endif 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1627 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1628 size += length; 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1629 packets++; 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1630 244a92b6cc6f9ae Appana Durga Kedareswara Rao 2020-01-24 1631 /* Ensure that the skb is completely updated 244a92b6cc6f9ae Appana Durga Kedareswara Rao 2020-01-24 1632 * prio to mapping the DMA 244a92b6cc6f9ae Appana Durga Kedareswara Rao 2020-01-24 1633 */ 244a92b6cc6f9ae Appana Durga Kedareswara Rao 2020-01-24 1634 wmb(); 244a92b6cc6f9ae Appana Durga Kedareswara Rao 2020-01-24 1635 ee94241b2118ddd Saurabh Sengar 2021-01-22 1636 cur_p->phys = dma_map_single(ndev->dev.parent, new_skb->data, 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1637 lp->max_frm_size, 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1638 DMA_FROM_DEVICE); 8bb7c59151794fc Harini Katakam 2022-02-22 1639 if (unlikely(dma_mapping_error(ndev->dev.parent, cur_p->phys))) { 8bb7c59151794fc Harini Katakam 2022-02-22 1640 cur_p->phys = 0; 8bb7c59151794fc Harini Katakam 2022-02-22 @1641 dev_kfree_skb(skb); 8bb7c59151794fc Harini Katakam 2022-02-22 1642 dev_err(lp->dev, "RX buffer map failed\n"); 8bb7c59151794fc Harini Katakam 2022-02-22 1643 break; 8bb7c59151794fc Harini Katakam 2022-02-22 1644 } 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1645 cur_p->cntrl = lp->max_frm_size; 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1646 cur_p->status = 0; ee94241b2118ddd Saurabh Sengar 2021-01-22 1647 cur_p->sw_id_offset = (phys_addr_t)new_skb; 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1648 ee94241b2118ddd Saurabh Sengar 2021-01-22 1649 if (++q->rx_bd_ci >= lp->rx_bd_num) ee94241b2118ddd Saurabh Sengar 2021-01-22 1650 q->rx_bd_ci = 0; 244a92b6cc6f9ae Appana Durga Kedareswara Rao 2020-01-24 1651 244a92b6cc6f9ae Appana Durga Kedareswara Rao 2020-01-24 1652 /* Get relevat BD status value */ 244a92b6cc6f9ae Appana Durga Kedareswara Rao 2020-01-24 1653 rmb(); ee94241b2118ddd Saurabh Sengar 2021-01-22 1654 #ifdef CONFIG_AXIENET_HAS_MCDMA ee94241b2118ddd Saurabh Sengar 2021-01-22 1655 cur_p = &q->rxq_bd_v[q->rx_bd_ci]; ee94241b2118ddd Saurabh Sengar 2021-01-22 1656 #else ee94241b2118ddd Saurabh Sengar 2021-01-22 1657 cur_p = &q->rx_bd_v[q->rx_bd_ci]; ee94241b2118ddd Saurabh Sengar 2021-01-22 1658 #endif ec9a60a97272571 Appana Durga Kedareswara Rao 2020-01-24 1659 numbdfree++; 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1660 } 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1661 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1662 ndev->stats.rx_packets += packets; 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1663 ndev->stats.rx_bytes += size; ee94241b2118ddd Saurabh Sengar 2021-01-22 1664 q->rx_packets += packets; ee94241b2118ddd Saurabh Sengar 2021-01-22 1665 q->rx_bytes += size; 8a3b7a252dca9fb Daniel Borkmann 2012-01-19 1666 ee94241b2118ddd Saurabh Sengar 2021-01-22 1667 if (tail_p) { ee94241b2118ddd Saurabh Sengar 2021-01-22 1668 #ifdef CONFIG_AXIENET_HAS_MCDMA ee94241b2118ddd Saurabh Sengar 2021-01-22 1669 axienet_dma_bdout(q, XMCDMA_CHAN_TAILDESC_OFFSET(q->chan_id) + ee94241b2118ddd Saurabh Sengar 2021-01-22 1670 q->rx_offset, tail_p); ee94241b2118ddd Saurabh Sengar 2021-01-22 1671 #else ee94241b2118ddd Saurabh Sengar 2021-01-22 1672 axienet_dma_bdout(q, XAXIDMA_RX_TDESC_OFFSET, tail_p); ee94241b2118ddd Saurabh Sengar 2021-01-22 1673 #endif ee94241b2118ddd Saurabh Sengar 2021-01-22 1674 } ec9a60a97272571 Appana Durga Kedareswara Rao 2020-01-24 1675 ec9a60a97272571 Appana Durga Kedareswara Rao 2020-01-24 1676 return numbdfree; ec9a60a97272571 Appana Durga Kedareswara Rao 2020-01-24 1677 } ec9a60a97272571 Appana Durga Kedareswara Rao 2020-01-24 1678 -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
