CC: [email protected]
CC: "GNU/Weeb Mailing List" <[email protected]>
CC: [email protected]
TO: Lorenzo Bianconi <[email protected]>
CC: Alexei Starovoitov <[email protected]>

tree:   https://github.com/ammarfaizi2/linux-block bpf/bpf-next/master
head:   5ee32ea24ce7075736e03b4b0b5954a8a323cd73
commit: c41ced023a9892572bd0ec8c3af0bd99faefd31f [59/159] net: mvneta: add 
frags support to XDP_TX
:::::: branch date: 3 hours ago
:::::: commit date: 11 days ago
config: nios2-randconfig-m031-20220130 
(https://download.01.org/0day-ci/archive/20220201/[email protected]/config)
compiler: nios2-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: Dan Carpenter <[email protected]>

New smatch warnings:
drivers/net/ethernet/marvell/mvneta.c:2145 mvneta_xdp_submit_frame() warn: 
variable dereferenced before check 'tx_desc' (see line 2136)

Old smatch warnings:
arch/nios2/include/asm/thread_info.h:71 current_thread_info() error: 
uninitialized symbol 'sp'.
drivers/net/ethernet/marvell/mvneta.c:2409 mvneta_swbm_build_skb() error: 
uninitialized symbol 'num_frags'.
include/linux/skbuff.h:2971 __netdev_alloc_skb_ip_align() warn: should this be 
a bitwise op?

vim +/tx_desc +2145 drivers/net/ethernet/marvell/mvneta.c

ca0e014609f05f Lorenzo Bianconi 2020-07-17  2079  
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2080  static int
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2081  
mvneta_xdp_submit_frame(struct mvneta_port *pp, struct mvneta_tx_queue *txq,
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2082                        struct 
xdp_frame *xdpf, int *nxmit_byte, bool dma_map)
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2083  {
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2084        struct skb_shared_info 
*sinfo = xdp_get_shared_info_from_frame(xdpf);
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2085        struct device *dev = 
pp->dev->dev.parent;
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2086        struct mvneta_tx_desc 
*tx_desc = NULL;
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2087        int i, num_frames = 1;
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2088        struct page *page;
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2089  
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2090        if 
(unlikely(xdp_frame_has_frags(xdpf)))
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2091                num_frames += 
sinfo->nr_frags;
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2092  
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2093        if (txq->count + 
num_frames >= txq->size)
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2094                return 
MVNETA_XDP_DROPPED;
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2095  
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2096        for (i = 0; i < 
num_frames; i++) {
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2097                struct 
mvneta_tx_buf *buf = &txq->buf[txq->txq_put_index];
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2098                skb_frag_t 
*frag = NULL;
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2099                int len = 
xdpf->len;
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2100                dma_addr_t 
dma_addr;
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2101  
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2102                if 
(unlikely(i)) { /* paged area */
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2103                        frag = 
&sinfo->frags[i - 1];
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2104                        len = 
skb_frag_size(frag);
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2105                }
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2106  
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2107                tx_desc = 
mvneta_txq_next_desc_get(txq);
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2108                if (dma_map) {
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2109                        /* 
ndo_xdp_xmit */
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2110                        void 
*data;
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2111  
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2112                        data = 
unlikely(frag) ? skb_frag_address(frag)
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2113                                
              : xdpf->data;
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2114                        
dma_addr = dma_map_single(dev, data, len,
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2115                                
                  DMA_TO_DEVICE);
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2116                        if 
(dma_mapping_error(dev, dma_addr)) {
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2117                                
mvneta_txq_desc_put(txq);
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2118                                
goto unmap;
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2119                        }
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2120  
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2121                        
buf->type = MVNETA_TYPE_XDP_NDO;
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2122                } else {
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2123                        page = 
unlikely(frag) ? skb_frag_page(frag)
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2124                                
              : virt_to_page(xdpf->data);
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2125                        
dma_addr = page_pool_get_dma_addr(page);
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2126                        if 
(unlikely(frag))
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2127                                
dma_addr += skb_frag_off(frag);
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2128                        else
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2129                                
dma_addr += sizeof(*xdpf) + xdpf->headroom;
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2130                        
dma_sync_single_for_device(dev, dma_addr, len,
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2131                                
                   DMA_BIDIRECTIONAL);
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2132                        
buf->type = MVNETA_TYPE_XDP_TX;
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2133                }
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2134                buf->xdpf = 
unlikely(i) ? NULL : xdpf;
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2135  
c41ced023a9892 Lorenzo Bianconi 2022-01-21 @2136                
tx_desc->command = unlikely(i) ? 0 : MVNETA_TXD_F_DESC;
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2137                
tx_desc->buf_phys_addr = dma_addr;
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2138                
tx_desc->data_size = len;
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2139                *nxmit_byte += 
len;
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2140  
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2141                
mvneta_txq_inc_put(txq);
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2142        }
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2143  
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2144        /*last descriptor */
c41ced023a9892 Lorenzo Bianconi 2022-01-21 @2145        if (likely(tx_desc))
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2146                
tx_desc->command |= MVNETA_TXD_L_DESC | MVNETA_TXD_Z_PAD;
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2147  
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2148        txq->pending += 
num_frames;
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2149        txq->count += 
num_frames;
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2150  
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2151        return MVNETA_XDP_TX;
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2152  
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2153  unmap:
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2154        for (i--; i >= 0; i--) {
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2155                
mvneta_txq_desc_put(txq);
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2156                tx_desc = 
txq->descs + txq->next_desc_to_proc;
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2157                
dma_unmap_single(dev, tx_desc->buf_phys_addr,
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2158                                
 tx_desc->data_size,
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2159                                
 DMA_TO_DEVICE);
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2160        }
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2161  
c41ced023a9892 Lorenzo Bianconi 2022-01-21  2162        return 
MVNETA_XDP_DROPPED;
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2163  }
b0a43db9087a21 Lorenzo Bianconi 2019-10-19  2164  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to