lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202506131458.MnU50xNO-lkp@intel.com>
Date: Fri, 13 Jun 2025 15:04:02 +0800
From: kernel test robot <lkp@...el.com>
To: Thomas Fourier <fourier.thomas@...il.com>
Cc: oe-kbuild-all@...ts.linux.dev,
	Thomas Fourier <fourier.thomas@...il.com>,
	Chris Snook <chris.snook@...il.com>,
	Andrew Lunn <andrew+netdev@...n.ch>,
	Eric Dumazet <edumazet@...gle.com>,
	Jakub Kicinski <kuba@...nel.org>, Paolo Abeni <pabeni@...hat.com>,
	Ingo Molnar <mingo@...nel.org>,
	Thomas Gleixner <tglx@...utronix.de>, netdev@...r.kernel.org,
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH] (drivers/ethernet/atheros/atl1) test DMA mapping for
 error code

Hi Thomas,

kernel test robot noticed the following build errors:

[auto build test ERROR on linus/master]
[also build test ERROR on v6.16-rc1 next-20250612]
[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/Thomas-Fourier/drivers-ethernet-atheros-atl1-test-DMA-mapping-for-error-code/20250612-231733
base:   linus/master
patch link:    https://lore.kernel.org/r/20250612150542.85239-2-fourier.thomas%40gmail.com
patch subject: [PATCH] (drivers/ethernet/atheros/atl1) test DMA mapping for error code
config: x86_64-rhel-9.4 (https://download.01.org/0day-ci/archive/20250613/202506131458.MnU50xNO-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250613/202506131458.MnU50xNO-lkp@intel.com/reproduce)

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@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202506131458.MnU50xNO-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

   drivers/net/ethernet/atheros/atlx/atl1.c: In function 'atl1_tx_map':
>> drivers/net/ethernet/atheros/atlx/atl1.c:2315:34: warning: assignment to 'dma_addr_t' {aka 'long long unsigned int'} from 'void *' makes integer from pointer without a cast [-Wint-conversion]
    2315 |                 buffer_info->dma = NULL;
         |                                  ^
>> drivers/net/ethernet/atheros/atlx/atl1.c:2317:39: error: 'tdp_ring' undeclared (first use in this function); did you mean 'tpd_ring'?
    2317 |                 if (++first_mapped == tdp_ring->count)
         |                                       ^~~~~~~~
         |                                       tpd_ring
   drivers/net/ethernet/atheros/atlx/atl1.c:2317:39: note: each undeclared identifier is reported only once for each function it appears in


vim +2317 drivers/net/ethernet/atheros/atlx/atl1.c

  2192	
  2193	static int atl1_tx_map(struct atl1_adapter *adapter, struct sk_buff *skb,
  2194		struct tx_packet_desc *ptpd)
  2195	{
  2196		struct atl1_tpd_ring *tpd_ring = &adapter->tpd_ring;
  2197		struct atl1_buffer *buffer_info;
  2198		u16 buf_len = skb->len;
  2199		struct page *page;
  2200		unsigned long offset;
  2201		unsigned int nr_frags;
  2202		unsigned int f;
  2203		int retval;
  2204		u16 next_to_use;
  2205		u16 first_mapped;
  2206		u16 data_len;
  2207		u8 hdr_len;
  2208	
  2209		buf_len -= skb->data_len;
  2210		nr_frags = skb_shinfo(skb)->nr_frags;
  2211		next_to_use = atomic_read(&tpd_ring->next_to_use);
  2212		first_mapped = next_to_use;
  2213		buffer_info = &tpd_ring->buffer_info[next_to_use];
  2214		BUG_ON(buffer_info->skb);
  2215		/* put skb in last TPD */
  2216		buffer_info->skb = NULL;
  2217	
  2218		retval = (ptpd->word3 >> TPD_SEGMENT_EN_SHIFT) & TPD_SEGMENT_EN_MASK;
  2219		if (retval) {
  2220			/* TSO */
  2221			hdr_len = skb_tcp_all_headers(skb);
  2222			buffer_info->length = hdr_len;
  2223			page = virt_to_page(skb->data);
  2224			offset = offset_in_page(skb->data);
  2225			buffer_info->dma = dma_map_page(&adapter->pdev->dev, page,
  2226							offset, hdr_len,
  2227							DMA_TO_DEVICE);
  2228			if (dma_mapping_error(&adapter->pdev->dev, buffer_info->dma))
  2229				goto dma_err;
  2230	
  2231			if (++next_to_use == tpd_ring->count)
  2232				next_to_use = 0;
  2233	
  2234			if (buf_len > hdr_len) {
  2235				int i, nseg;
  2236	
  2237				data_len = buf_len - hdr_len;
  2238				nseg = (data_len + ATL1_MAX_TX_BUF_LEN - 1) /
  2239					ATL1_MAX_TX_BUF_LEN;
  2240				for (i = 0; i < nseg; i++) {
  2241					buffer_info =
  2242					    &tpd_ring->buffer_info[next_to_use];
  2243					buffer_info->skb = NULL;
  2244					buffer_info->length =
  2245					    (ATL1_MAX_TX_BUF_LEN >=
  2246					     data_len) ? ATL1_MAX_TX_BUF_LEN : data_len;
  2247					data_len -= buffer_info->length;
  2248					page = virt_to_page(skb->data +
  2249						(hdr_len + i * ATL1_MAX_TX_BUF_LEN));
  2250					offset = offset_in_page(skb->data +
  2251						(hdr_len + i * ATL1_MAX_TX_BUF_LEN));
  2252					buffer_info->dma = dma_map_page(&adapter->pdev->dev,
  2253									page, offset,
  2254									buffer_info->length,
  2255									DMA_TO_DEVICE);
  2256					if (dma_mapping_error(&adapter->pdev->dev, buffer_info->dma))
  2257						goto dma_err;
  2258					if (++next_to_use == tpd_ring->count)
  2259						next_to_use = 0;
  2260				}
  2261			}
  2262		} else {
  2263			/* not TSO */
  2264			buffer_info->length = buf_len;
  2265			page = virt_to_page(skb->data);
  2266			offset = offset_in_page(skb->data);
  2267			buffer_info->dma = dma_map_page(&adapter->pdev->dev, page,
  2268							offset, buf_len,
  2269							DMA_TO_DEVICE);
  2270			if (dma_mapping_error(&adapter->pdev->dev, buffer_info->dma))
  2271				goto dma_err;
  2272			if (++next_to_use == tpd_ring->count)
  2273				next_to_use = 0;
  2274		}
  2275	
  2276		for (f = 0; f < nr_frags; f++) {
  2277			const skb_frag_t *frag = &skb_shinfo(skb)->frags[f];
  2278			u16 i, nseg;
  2279	
  2280			buf_len = skb_frag_size(frag);
  2281	
  2282			nseg = (buf_len + ATL1_MAX_TX_BUF_LEN - 1) /
  2283				ATL1_MAX_TX_BUF_LEN;
  2284			for (i = 0; i < nseg; i++) {
  2285				buffer_info = &tpd_ring->buffer_info[next_to_use];
  2286				BUG_ON(buffer_info->skb);
  2287	
  2288				buffer_info->skb = NULL;
  2289				buffer_info->length = (buf_len > ATL1_MAX_TX_BUF_LEN) ?
  2290					ATL1_MAX_TX_BUF_LEN : buf_len;
  2291				buf_len -= buffer_info->length;
  2292				buffer_info->dma = skb_frag_dma_map(&adapter->pdev->dev,
  2293					frag, i * ATL1_MAX_TX_BUF_LEN,
  2294					buffer_info->length, DMA_TO_DEVICE);
  2295				if (dma_mapping_error(&adapter->pdev->dev, buffer_info->dma))
  2296					goto dma_err;
  2297	
  2298				if (++next_to_use == tpd_ring->count)
  2299					next_to_use = 0;
  2300			}
  2301		}
  2302	
  2303		/* last tpd's buffer-info */
  2304		buffer_info->skb = skb;
  2305	
  2306		return 0;
  2307	
  2308	 dma_err:
  2309		while (first_mapped != next_to_use) {
  2310			buffer_info = &tpd_ring->buffer_info[first_mapped];
  2311			dma_unmap_page(&adapter->pdev->dev,
  2312				       buffer_info->dma,
  2313				       buffer_info->length,
  2314				       DMA_TO_DEVICE);
> 2315			buffer_info->dma = NULL;
  2316	
> 2317			if (++first_mapped == tdp_ring->count)
  2318				first_mapped = 0;
  2319		}
  2320		return -ENOMEM;
  2321	}
  2322	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ