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
next 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.