All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: Re: [PATCH v2] net: allow skb_datagram_iter to be called from any context
Date: Fri, 28 Jun 2024 23:40:44 +0800	[thread overview]
Message-ID: <202406282328.e4z61dm7-lkp@intel.com> (raw)

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20240623081248.170613-1-sagi@grimberg.me>
References: <20240623081248.170613-1-sagi@grimberg.me>
TO: Sagi Grimberg <sagi@grimberg.me>
TO: netdev@vger.kernel.org
TO: Jakub Kicinski <kuba@kernel.org>
CC: Eric Dumazet <edumazet@google.com>
CC: David Howells <dhowells@redhat.com>
CC: Matthew Wilcox <willy@infradead.org>
CC: Sagi Grimberg <sagi@grimberg.me>

Hi Sagi,

kernel test robot noticed the following build warnings:

[auto build test WARNING on net/main]
[also build test WARNING on net-next/main linus/master horms-ipvs/master v6.10-rc5]
[cannot apply to next-20240627]
[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/Sagi-Grimberg/net-allow-skb_datagram_iter-to-be-called-from-any-context/20240625-182355
base:   net/main
patch link:    https://lore.kernel.org/r/20240623081248.170613-1-sagi%40grimberg.me
patch subject: [PATCH v2] net: allow skb_datagram_iter to be called from any context
:::::: branch date: 3 days ago
:::::: commit date: 3 days ago
config: i386-randconfig-141-20240628 (https://download.01.org/0day-ci/archive/20240628/202406282328.e4z61dm7-lkp@intel.com/config)
compiler: gcc-8 (Ubuntu 8.4.0-3ubuntu2) 8.4.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@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202406282328.e4z61dm7-lkp@intel.com/

smatch warnings:
net/core/datagram.c:435 __skb_datagram_iter() error: uninitialized symbol 'n'.

vim +/n +435 net/core/datagram.c

3305b80c214c64 Herbert Xu    2005-12-13  382  
29f3490ba9d239 Eric Dumazet  2020-03-24  383  INDIRECT_CALLABLE_DECLARE(static size_t simple_copy_to_iter(const void *addr,
29f3490ba9d239 Eric Dumazet  2020-03-24  384  						size_t bytes,
29f3490ba9d239 Eric Dumazet  2020-03-24  385  						void *data __always_unused,
29f3490ba9d239 Eric Dumazet  2020-03-24  386  						struct iov_iter *i));
29f3490ba9d239 Eric Dumazet  2020-03-24  387  
56dc6d6355744b YueHaibing    2019-03-19  388  static int __skb_datagram_iter(const struct sk_buff *skb, int offset,
950fcaecd5cc6c Sagi Grimberg 2018-12-03  389  			       struct iov_iter *to, int len, bool fault_short,
56dc6d6355744b YueHaibing    2019-03-19  390  			       size_t (*cb)(const void *, size_t, void *,
56dc6d6355744b YueHaibing    2019-03-19  391  					    struct iov_iter *), void *data)
a8f820aa4066d2 Herbert Xu    2014-11-07  392  {
a8f820aa4066d2 Herbert Xu    2014-11-07  393  	int start = skb_headlen(skb);
3278682123811d Al Viro       2017-02-17  394  	int i, copy = start - offset, start_off = offset, n;
a8f820aa4066d2 Herbert Xu    2014-11-07  395  	struct sk_buff *frag_iter;
a8f820aa4066d2 Herbert Xu    2014-11-07  396  
a8f820aa4066d2 Herbert Xu    2014-11-07  397  	/* Copy header. */
a8f820aa4066d2 Herbert Xu    2014-11-07  398  	if (copy > 0) {
a8f820aa4066d2 Herbert Xu    2014-11-07  399  		if (copy > len)
a8f820aa4066d2 Herbert Xu    2014-11-07  400  			copy = len;
29f3490ba9d239 Eric Dumazet  2020-03-24  401  		n = INDIRECT_CALL_1(cb, simple_copy_to_iter,
29f3490ba9d239 Eric Dumazet  2020-03-24  402  				    skb->data + offset, copy, data, to);
3278682123811d Al Viro       2017-02-17  403  		offset += n;
3278682123811d Al Viro       2017-02-17  404  		if (n != copy)
a8f820aa4066d2 Herbert Xu    2014-11-07  405  			goto short_copy;
a8f820aa4066d2 Herbert Xu    2014-11-07  406  		if ((len -= copy) == 0)
a8f820aa4066d2 Herbert Xu    2014-11-07  407  			return 0;
a8f820aa4066d2 Herbert Xu    2014-11-07  408  	}
a8f820aa4066d2 Herbert Xu    2014-11-07  409  
a8f820aa4066d2 Herbert Xu    2014-11-07  410  	/* Copy paged appendix. Hmm... why does this look so complicated? */
a8f820aa4066d2 Herbert Xu    2014-11-07  411  	for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
a8f820aa4066d2 Herbert Xu    2014-11-07  412  		int end;
a8f820aa4066d2 Herbert Xu    2014-11-07  413  		const skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
a8f820aa4066d2 Herbert Xu    2014-11-07  414  
a8f820aa4066d2 Herbert Xu    2014-11-07  415  		WARN_ON(start > offset + len);
a8f820aa4066d2 Herbert Xu    2014-11-07  416  
a8f820aa4066d2 Herbert Xu    2014-11-07  417  		end = start + skb_frag_size(frag);
a8f820aa4066d2 Herbert Xu    2014-11-07  418  		if ((copy = end - offset) > 0) {
3a8698b261c7de Sagi Grimberg 2024-06-23  419  			u32 p_off, p_len, copied;
3a8698b261c7de Sagi Grimberg 2024-06-23  420  			struct page *p;
3a8698b261c7de Sagi Grimberg 2024-06-23  421  			u8 *vaddr;
0fc07791bc7754 Sagi Grimberg 2018-12-03  422  
a8f820aa4066d2 Herbert Xu    2014-11-07  423  			if (copy > len)
a8f820aa4066d2 Herbert Xu    2014-11-07  424  				copy = len;
3a8698b261c7de Sagi Grimberg 2024-06-23  425  
3a8698b261c7de Sagi Grimberg 2024-06-23  426  			skb_frag_foreach_page(frag,
3a8698b261c7de Sagi Grimberg 2024-06-23  427  					      skb_frag_off(frag) + offset - start,
3a8698b261c7de Sagi Grimberg 2024-06-23  428  					      copy, p, p_off, p_len, copied) {
3a8698b261c7de Sagi Grimberg 2024-06-23  429  				vaddr = kmap_local_page(p);
29f3490ba9d239 Eric Dumazet  2020-03-24  430  				n = INDIRECT_CALL_1(cb, simple_copy_to_iter,
3a8698b261c7de Sagi Grimberg 2024-06-23  431  					vaddr + p_off, p_len, data, to);
3a8698b261c7de Sagi Grimberg 2024-06-23  432  				kunmap_local(vaddr);
3a8698b261c7de Sagi Grimberg 2024-06-23  433  			}
3a8698b261c7de Sagi Grimberg 2024-06-23  434  
3278682123811d Al Viro       2017-02-17 @435  			offset += n;
3278682123811d Al Viro       2017-02-17  436  			if (n != copy)
a8f820aa4066d2 Herbert Xu    2014-11-07  437  				goto short_copy;
a8f820aa4066d2 Herbert Xu    2014-11-07  438  			if (!(len -= copy))
a8f820aa4066d2 Herbert Xu    2014-11-07  439  				return 0;
a8f820aa4066d2 Herbert Xu    2014-11-07  440  		}
a8f820aa4066d2 Herbert Xu    2014-11-07  441  		start = end;
a8f820aa4066d2 Herbert Xu    2014-11-07  442  	}
a8f820aa4066d2 Herbert Xu    2014-11-07  443  
a8f820aa4066d2 Herbert Xu    2014-11-07  444  	skb_walk_frags(skb, frag_iter) {
a8f820aa4066d2 Herbert Xu    2014-11-07  445  		int end;
a8f820aa4066d2 Herbert Xu    2014-11-07  446  
a8f820aa4066d2 Herbert Xu    2014-11-07  447  		WARN_ON(start > offset + len);
a8f820aa4066d2 Herbert Xu    2014-11-07  448  
a8f820aa4066d2 Herbert Xu    2014-11-07  449  		end = start + frag_iter->len;
a8f820aa4066d2 Herbert Xu    2014-11-07  450  		if ((copy = end - offset) > 0) {
a8f820aa4066d2 Herbert Xu    2014-11-07  451  			if (copy > len)
a8f820aa4066d2 Herbert Xu    2014-11-07  452  				copy = len;
950fcaecd5cc6c Sagi Grimberg 2018-12-03  453  			if (__skb_datagram_iter(frag_iter, offset - start,
65d69e2505bb64 Sagi Grimberg 2018-12-03  454  						to, copy, fault_short, cb, data))
a8f820aa4066d2 Herbert Xu    2014-11-07  455  				goto fault;
a8f820aa4066d2 Herbert Xu    2014-11-07  456  			if ((len -= copy) == 0)
a8f820aa4066d2 Herbert Xu    2014-11-07  457  				return 0;
a8f820aa4066d2 Herbert Xu    2014-11-07  458  			offset += copy;
a8f820aa4066d2 Herbert Xu    2014-11-07  459  		}
a8f820aa4066d2 Herbert Xu    2014-11-07  460  		start = end;
a8f820aa4066d2 Herbert Xu    2014-11-07  461  	}
a8f820aa4066d2 Herbert Xu    2014-11-07  462  	if (!len)
a8f820aa4066d2 Herbert Xu    2014-11-07  463  		return 0;
a8f820aa4066d2 Herbert Xu    2014-11-07  464  
a8f820aa4066d2 Herbert Xu    2014-11-07  465  	/* This is not really a user copy fault, but rather someone
a8f820aa4066d2 Herbert Xu    2014-11-07  466  	 * gave us a bogus length on the skb.  We should probably
a8f820aa4066d2 Herbert Xu    2014-11-07  467  	 * print a warning here as it may indicate a kernel bug.
a8f820aa4066d2 Herbert Xu    2014-11-07  468  	 */
a8f820aa4066d2 Herbert Xu    2014-11-07  469  
a8f820aa4066d2 Herbert Xu    2014-11-07  470  fault:
3278682123811d Al Viro       2017-02-17  471  	iov_iter_revert(to, offset - start_off);
a8f820aa4066d2 Herbert Xu    2014-11-07  472  	return -EFAULT;
a8f820aa4066d2 Herbert Xu    2014-11-07  473  
a8f820aa4066d2 Herbert Xu    2014-11-07  474  short_copy:
950fcaecd5cc6c Sagi Grimberg 2018-12-03  475  	if (fault_short || iov_iter_count(to))
a8f820aa4066d2 Herbert Xu    2014-11-07  476  		goto fault;
a8f820aa4066d2 Herbert Xu    2014-11-07  477  
a8f820aa4066d2 Herbert Xu    2014-11-07  478  	return 0;
a8f820aa4066d2 Herbert Xu    2014-11-07  479  }
950fcaecd5cc6c Sagi Grimberg 2018-12-03  480  

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

             reply	other threads:[~2024-06-28 15:40 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-28 15:40 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-06-23  8:12 [PATCH v2] net: allow skb_datagram_iter to be called from any context Sagi Grimberg
2024-06-23 13:44 ` Sagi Grimberg
2024-06-25 13:27 ` Paolo Abeni
2024-06-25 14:10   ` Jakub Kicinski
2024-06-25 14:40     ` Eric Dumazet
2024-06-27 15:03     ` Matthew Wilcox

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202406282328.e4z61dm7-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=error27@gmail.com \
    --cc=oe-kbuild@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.