Hi Shenwei, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on net-next/master] [also build test WARNING on next-20220928] [cannot apply to net/master linus/master v6.0-rc7] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Shenwei-Wang/net-fec-add-initial-XDP-support/20220928-232917 base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git b9a5cbf8ba24e88071a97a51a09ef5cdf0d1f6a1 config: parisc-randconfig-m031-20220925 compiler: hppa64-linux-gcc (GCC) 12.1.0 If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot New smatch warnings: drivers/net/ethernet/freescale/fec_main.c:3285 fec_enet_alloc_rxq_buffers() warn: unsigned 'err' is never less than zero. Old smatch warnings: drivers/net/ethernet/freescale/fec_main.c:3658 fec_enet_select_queue() warn: potential spectre issue 'fec_enet_vlan_pri_to_queue' [r] vim +/err +3285 drivers/net/ethernet/freescale/fec_main.c 3269 3270 static int 3271 fec_enet_alloc_rxq_buffers(struct net_device *ndev, unsigned int queue) 3272 { 3273 struct fec_enet_private *fep = netdev_priv(ndev); 3274 unsigned int i, err; 3275 struct bufdesc *bdp; 3276 struct fec_enet_priv_rx_q *rxq; 3277 3278 dma_addr_t phys_addr; 3279 struct page *page; 3280 3281 rxq = fep->rx_queue[queue]; 3282 bdp = rxq->bd.base; 3283 3284 err = fec_enet_create_page_pool(fep, rxq, rxq->bd.ring_size); > 3285 if (err < 0) { 3286 netdev_err(ndev, "%s failed queue %d (%d)\n", __func__, queue, err); 3287 return err; 3288 } 3289 3290 for (i = 0; i < rxq->bd.ring_size; i++) { 3291 page = page_pool_dev_alloc_pages(rxq->page_pool); 3292 if (!page) 3293 goto err_alloc; 3294 3295 phys_addr = page_pool_get_dma_addr(page) + FEC_ENET_XDP_HEADROOM; 3296 bdp->cbd_bufaddr = cpu_to_fec32(phys_addr); 3297 3298 rxq->rx_skb_info[i].page = page; 3299 rxq->rx_skb_info[i].offset = FEC_ENET_XDP_HEADROOM; 3300 bdp->cbd_sc = cpu_to_fec16(BD_ENET_RX_EMPTY); 3301 3302 if (fep->bufdesc_ex) { 3303 struct bufdesc_ex *ebdp = (struct bufdesc_ex *)bdp; 3304 ebdp->cbd_esc = cpu_to_fec32(BD_ENET_RX_INT); 3305 } 3306 3307 bdp = fec_enet_get_nextdesc(bdp, &rxq->bd); 3308 } 3309 3310 /* Set the last buffer to wrap. */ 3311 bdp = fec_enet_get_prevdesc(bdp, &rxq->bd); 3312 bdp->cbd_sc |= cpu_to_fec16(BD_SC_WRAP); 3313 return 0; 3314 3315 err_alloc: 3316 fec_enet_free_buffers(ndev); 3317 return -ENOMEM; 3318 } 3319 -- 0-DAY CI Kernel Test Service https://01.org/lkp