Hi Maciej, kernel test robot noticed the following build warnings: url: https://github.com/intel-lab-lkp/linux/commits/Maciej-Fijalkowski/xsk-fix-immature-cq-descriptor-production/20250705-215714 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git master patch link: https://lore.kernel.org/r/20250705135512.1963216-1-maciej.fijalkowski%40intel.com patch subject: [PATCH v2 bpf] xsk: fix immature cq descriptor production config: x86_64-randconfig-r071-20250706 (https://download.01.org/0day-ci/archive/20250706/202507061447.DwFSGum1-lkp@xxxxxxxxx/config) compiler: gcc-12 (Debian 12.2.0-14+deb12u1) 12.2.0 If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> | Closes: https://lore.kernel.org/r/202507061447.DwFSGum1-lkp@xxxxxxxxx/ smatch warnings: net/xdp/xsk.c:819 xsk_build_skb() warn: passing zero to 'ERR_PTR' vim +/ERR_PTR +819 net/xdp/xsk.c 9c8f21e6f8856a Xuan Zhuo 2021-02-18 689 static struct sk_buff *xsk_build_skb(struct xdp_sock *xs, 9c8f21e6f8856a Xuan Zhuo 2021-02-18 690 struct xdp_desc *desc) 9c8f21e6f8856a Xuan Zhuo 2021-02-18 691 { 48eb03dd26304c Stanislav Fomichev 2023-11-27 692 struct xsk_tx_metadata *meta = NULL; 9c8f21e6f8856a Xuan Zhuo 2021-02-18 693 struct net_device *dev = xs->dev; 67a37dcecabbf0 Maciej Fijalkowski 2025-07-05 694 struct xsk_addrs *addrs = NULL; cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 695 struct sk_buff *skb = xs->skb; 48eb03dd26304c Stanislav Fomichev 2023-11-27 696 bool first_frag = false; cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 697 int err; 9c8f21e6f8856a Xuan Zhuo 2021-02-18 698 9c8f21e6f8856a Xuan Zhuo 2021-02-18 699 if (dev->priv_flags & IFF_TX_SKB_NO_LINEAR) { 9c8f21e6f8856a Xuan Zhuo 2021-02-18 700 skb = xsk_build_skb_zerocopy(xs, desc); cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 701 if (IS_ERR(skb)) { cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 702 err = PTR_ERR(skb); cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 703 goto free_err; cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 704 } 9c8f21e6f8856a Xuan Zhuo 2021-02-18 705 } else { 9c8f21e6f8856a Xuan Zhuo 2021-02-18 706 u32 hr, tr, len; 9c8f21e6f8856a Xuan Zhuo 2021-02-18 707 void *buffer; 9c8f21e6f8856a Xuan Zhuo 2021-02-18 708 cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 709 buffer = xsk_buff_raw_get_data(xs->pool, desc->addr); 9c8f21e6f8856a Xuan Zhuo 2021-02-18 710 len = desc->len; 9c8f21e6f8856a Xuan Zhuo 2021-02-18 711 cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 712 if (!skb) { 0c0d0f42ffa6ac Felix Maurer 2024-11-14 713 first_frag = true; 0c0d0f42ffa6ac Felix Maurer 2024-11-14 714 cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 715 hr = max(NET_SKB_PAD, L1_CACHE_ALIGN(dev->needed_headroom)); cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 716 tr = dev->needed_tailroom; 9c8f21e6f8856a Xuan Zhuo 2021-02-18 717 skb = sock_alloc_send_skb(&xs->sk, hr + len + tr, 1, &err); 9c8f21e6f8856a Xuan Zhuo 2021-02-18 718 if (unlikely(!skb)) cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 719 goto free_err; 9c8f21e6f8856a Xuan Zhuo 2021-02-18 720 9c8f21e6f8856a Xuan Zhuo 2021-02-18 721 skb_reserve(skb, hr); 9c8f21e6f8856a Xuan Zhuo 2021-02-18 722 skb_put(skb, len); 9c8f21e6f8856a Xuan Zhuo 2021-02-18 723 9c8f21e6f8856a Xuan Zhuo 2021-02-18 724 err = skb_store_bits(skb, 0, buffer, len); 0c0d0f42ffa6ac Felix Maurer 2024-11-14 725 if (unlikely(err)) cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 726 goto free_err; 67a37dcecabbf0 Maciej Fijalkowski 2025-07-05 727 67a37dcecabbf0 Maciej Fijalkowski 2025-07-05 728 addrs = kzalloc(sizeof(*addrs), GFP_KERNEL); 67a37dcecabbf0 Maciej Fijalkowski 2025-07-05 729 if (!addrs) 67a37dcecabbf0 Maciej Fijalkowski 2025-07-05 730 goto free_err; err is not set on this path. regards, dan carpenter 67a37dcecabbf0 Maciej Fijalkowski 2025-07-05 731 67a37dcecabbf0 Maciej Fijalkowski 2025-07-05 732 xsk_set_destructor_arg(skb, addrs); 67a37dcecabbf0 Maciej Fijalkowski 2025-07-05 733 cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 734 } else { cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 735 int nr_frags = skb_shinfo(skb)->nr_frags; cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 736 struct page *page; cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 737 u8 *vaddr; cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 738 cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 739 if (unlikely(nr_frags == (MAX_SKB_FRAGS - 1) && xp_mb_desc(desc))) { 9d0a67b9d42c63 Tirthendu Sarkar 2023-08-23 740 err = -EOVERFLOW; cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 741 goto free_err; cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 742 } cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 743 cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 744 page = alloc_page(xs->sk.sk_allocation); cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 745 if (unlikely(!page)) { cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 746 err = -EAGAIN; cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 747 goto free_err; cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 748 } cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 749 cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 750 vaddr = kmap_local_page(page); cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 751 memcpy(vaddr, buffer, len); cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 752 kunmap_local(vaddr); cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 753 2127c604383666 Sebastian Andrzej Siewior 2024-02-02 754 skb_add_rx_frag(skb, nr_frags, page, 0, len, PAGE_SIZE); 2127c604383666 Sebastian Andrzej Siewior 2024-02-02 755 refcount_add(PAGE_SIZE, &xs->sk.sk_wmem_alloc); 9c8f21e6f8856a Xuan Zhuo 2021-02-18 756 } 48eb03dd26304c Stanislav Fomichev 2023-11-27 757 48eb03dd26304c Stanislav Fomichev 2023-11-27 758 if (first_frag && desc->options & XDP_TX_METADATA) { 48eb03dd26304c Stanislav Fomichev 2023-11-27 759 if (unlikely(xs->pool->tx_metadata_len == 0)) { 48eb03dd26304c Stanislav Fomichev 2023-11-27 760 err = -EINVAL; 48eb03dd26304c Stanislav Fomichev 2023-11-27 761 goto free_err; 48eb03dd26304c Stanislav Fomichev 2023-11-27 762 } 48eb03dd26304c Stanislav Fomichev 2023-11-27 763 48eb03dd26304c Stanislav Fomichev 2023-11-27 764 meta = buffer - xs->pool->tx_metadata_len; ce59f9686e0eca Stanislav Fomichev 2023-11-27 765 if (unlikely(!xsk_buff_valid_tx_metadata(meta))) { ce59f9686e0eca Stanislav Fomichev 2023-11-27 766 err = -EINVAL; ce59f9686e0eca Stanislav Fomichev 2023-11-27 767 goto free_err; ce59f9686e0eca Stanislav Fomichev 2023-11-27 768 } 48eb03dd26304c Stanislav Fomichev 2023-11-27 769 48eb03dd26304c Stanislav Fomichev 2023-11-27 770 if (meta->flags & XDP_TXMD_FLAGS_CHECKSUM) { 48eb03dd26304c Stanislav Fomichev 2023-11-27 771 if (unlikely(meta->request.csum_start + 48eb03dd26304c Stanislav Fomichev 2023-11-27 772 meta->request.csum_offset + 48eb03dd26304c Stanislav Fomichev 2023-11-27 773 sizeof(__sum16) > len)) { 48eb03dd26304c Stanislav Fomichev 2023-11-27 774 err = -EINVAL; 48eb03dd26304c Stanislav Fomichev 2023-11-27 775 goto free_err; 48eb03dd26304c Stanislav Fomichev 2023-11-27 776 } 48eb03dd26304c Stanislav Fomichev 2023-11-27 777 48eb03dd26304c Stanislav Fomichev 2023-11-27 778 skb->csum_start = hr + meta->request.csum_start; 48eb03dd26304c Stanislav Fomichev 2023-11-27 779 skb->csum_offset = meta->request.csum_offset; 48eb03dd26304c Stanislav Fomichev 2023-11-27 780 skb->ip_summed = CHECKSUM_PARTIAL; 11614723af26e7 Stanislav Fomichev 2023-11-27 781 11614723af26e7 Stanislav Fomichev 2023-11-27 782 if (unlikely(xs->pool->tx_sw_csum)) { 11614723af26e7 Stanislav Fomichev 2023-11-27 783 err = skb_checksum_help(skb); 11614723af26e7 Stanislav Fomichev 2023-11-27 784 if (err) 11614723af26e7 Stanislav Fomichev 2023-11-27 785 goto free_err; 11614723af26e7 Stanislav Fomichev 2023-11-27 786 } 48eb03dd26304c Stanislav Fomichev 2023-11-27 787 } ca4419f15abd19 Song Yoong Siang 2025-02-16 788 ca4419f15abd19 Song Yoong Siang 2025-02-16 789 if (meta->flags & XDP_TXMD_FLAGS_LAUNCH_TIME) ca4419f15abd19 Song Yoong Siang 2025-02-16 790 skb->skb_mstamp_ns = meta->request.launch_time; 48eb03dd26304c Stanislav Fomichev 2023-11-27 791 } 9c8f21e6f8856a Xuan Zhuo 2021-02-18 792 } 9c8f21e6f8856a Xuan Zhuo 2021-02-18 793 9c8f21e6f8856a Xuan Zhuo 2021-02-18 794 skb->dev = dev; 10bbf1652c1cca Eric Dumazet 2023-09-21 795 skb->priority = READ_ONCE(xs->sk.sk_priority); 3c5b4d69c358a9 Eric Dumazet 2023-07-28 796 skb->mark = READ_ONCE(xs->sk.sk_mark); 9c8f21e6f8856a Xuan Zhuo 2021-02-18 797 skb->destructor = xsk_destruct_skb; 48eb03dd26304c Stanislav Fomichev 2023-11-27 798 xsk_tx_metadata_to_compl(meta, &skb_shinfo(skb)->xsk_meta); 67a37dcecabbf0 Maciej Fijalkowski 2025-07-05 799 67a37dcecabbf0 Maciej Fijalkowski 2025-07-05 800 addrs = (struct xsk_addrs *)skb_shinfo(skb)->destructor_arg; 67a37dcecabbf0 Maciej Fijalkowski 2025-07-05 801 addrs->addrs[addrs->num_descs++] = desc->addr; 9c8f21e6f8856a Xuan Zhuo 2021-02-18 802 9c8f21e6f8856a Xuan Zhuo 2021-02-18 803 return skb; cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 804 cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 805 free_err: 0c0d0f42ffa6ac Felix Maurer 2024-11-14 806 if (first_frag && skb) 0c0d0f42ffa6ac Felix Maurer 2024-11-14 807 kfree_skb(skb); 0c0d0f42ffa6ac Felix Maurer 2024-11-14 808 9d0a67b9d42c63 Tirthendu Sarkar 2023-08-23 809 if (err == -EOVERFLOW) { 9d0a67b9d42c63 Tirthendu Sarkar 2023-08-23 810 /* Drop the packet */ 67a37dcecabbf0 Maciej Fijalkowski 2025-07-05 811 xsk_inc_skb_descs(xs->skb); 9d0a67b9d42c63 Tirthendu Sarkar 2023-08-23 812 xsk_drop_skb(xs->skb); cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 813 xskq_cons_release(xs->tx); 9d0a67b9d42c63 Tirthendu Sarkar 2023-08-23 814 } else { 9d0a67b9d42c63 Tirthendu Sarkar 2023-08-23 815 /* Let application retry */ e6c4047f512280 Maciej Fijalkowski 2024-10-07 816 xsk_cq_cancel_locked(xs->pool, 1); cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 817 } cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 818 cf24f5a5feeaae Tirthendu Sarkar 2023-07-19 @819 return ERR_PTR(err); 9c8f21e6f8856a Xuan Zhuo 2021-02-18 820 } -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki