From: kbuild test robot <lkp@intel•com>
To: Yonghong Song <yhs@fb•com>, Andrii Nakryiko <andriin@fb•com>,
bpf@vger•kernel.org, Martin KaFai Lau <kafai@fb•com>,
netdev@vger•kernel.org
Cc: kbuild-all@lists•01.org, Alexei Starovoitov <ast@fb•com>,
Daniel Borkmann <daniel@iogearbox•net>,
kernel-team@fb•com
Subject: Re: [PATCH bpf-next v1 12/19] bpf: add bpf_seq_printf and bpf_seq_write helpers
Date: Tue, 28 Apr 2020 14:02:28 +0800 [thread overview]
Message-ID: <202004281302.DSoHBqoM%lkp@intel.com> (raw)
In-Reply-To: <20200427201249.2995688-1-yhs@fb.com>
[-- Attachment #1: Type: text/plain, Size: 6453 bytes --]
Hi Yonghong,
I love your patch! Perhaps something to improve:
[auto build test WARNING on bpf-next/master]
[cannot apply to bpf/master net/master vhost/linux-next net-next/master linus/master v5.7-rc3 next-20200424]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Yonghong-Song/bpf-implement-bpf-iterator-for-kernel-data/20200428-115101
base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
config: sh-allmodconfig (attached as .config)
compiler: sh4-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day GCC_VERSION=9.3.0 make.cross ARCH=sh
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel•com>
All warnings (new ones prefixed by >>):
In file included from kernel/trace/bpf_trace.c:10:
kernel/trace/bpf_trace.c: In function 'bpf_seq_printf':
>> kernel/trace/bpf_trace.c:463:35: warning: the frame size of 1672 bytes is larger than 1024 bytes [-Wframe-larger-than=]
463 | BPF_CALL_5(bpf_seq_printf, struct seq_file *, m, char *, fmt, u32, fmt_size,
| ^~~~~~~~
include/linux/filter.h:456:30: note: in definition of macro '__BPF_CAST'
456 | (unsigned long)0, (t)0))) a
| ^
>> include/linux/filter.h:449:27: note: in expansion of macro '__BPF_MAP_5'
449 | #define __BPF_MAP(n, ...) __BPF_MAP_##n(__VA_ARGS__)
| ^~~~~~~~~~
>> include/linux/filter.h:474:35: note: in expansion of macro '__BPF_MAP'
474 | return ((btf_##name)____##name)(__BPF_MAP(x,__BPF_CAST,__BPF_N,__VA_ARGS__));\
| ^~~~~~~~~
>> include/linux/filter.h:484:31: note: in expansion of macro 'BPF_CALL_x'
484 | #define BPF_CALL_5(name, ...) BPF_CALL_x(5, name, __VA_ARGS__)
| ^~~~~~~~~~
>> kernel/trace/bpf_trace.c:463:1: note: in expansion of macro 'BPF_CALL_5'
463 | BPF_CALL_5(bpf_seq_printf, struct seq_file *, m, char *, fmt, u32, fmt_size,
| ^~~~~~~~~~
vim +463 kernel/trace/bpf_trace.c
462
> 463 BPF_CALL_5(bpf_seq_printf, struct seq_file *, m, char *, fmt, u32, fmt_size,
464 const void *, data, u32, data_len)
465 {
466 char bufs[MAX_SEQ_PRINTF_VARARGS][MAX_SEQ_PRINTF_STR_LEN];
467 u64 params[MAX_SEQ_PRINTF_VARARGS];
468 int i, copy_size, num_args;
469 const u64 *args = data;
470 int fmt_cnt = 0;
471
472 /*
473 * bpf_check()->check_func_arg()->check_stack_boundary()
474 * guarantees that fmt points to bpf program stack,
475 * fmt_size bytes of it were initialized and fmt_size > 0
476 */
477 if (fmt[--fmt_size] != 0)
478 return -EINVAL;
479
480 if (data_len & 7)
481 return -EINVAL;
482
483 for (i = 0; i < fmt_size; i++) {
484 if (fmt[i] == '%' && (!data || !data_len))
485 return -EINVAL;
486 }
487
488 num_args = data_len / 8;
489
490 /* check format string for allowed specifiers */
491 for (i = 0; i < fmt_size; i++) {
492 if ((!isprint(fmt[i]) && !isspace(fmt[i])) || !isascii(fmt[i]))
493 return -EINVAL;
494
495 if (fmt[i] != '%')
496 continue;
497
498 if (fmt_cnt >= MAX_SEQ_PRINTF_VARARGS)
499 return -E2BIG;
500
501 if (fmt_cnt >= num_args)
502 return -EINVAL;
503
504 /* fmt[i] != 0 && fmt[last] == 0, so we can access fmt[i + 1] */
505 i++;
506
507 /* skip optional "[0+-][num]" width formating field */
508 while (fmt[i] == '0' || fmt[i] == '+' || fmt[i] == '-')
509 i++;
510 if (fmt[i] >= '1' && fmt[i] <= '9') {
511 i++;
512 while (fmt[i] >= '0' && fmt[i] <= '9')
513 i++;
514 }
515
516 if (fmt[i] == 's') {
517 /* disallow any further format extensions */
518 if (fmt[i + 1] != 0 &&
519 !isspace(fmt[i + 1]) &&
520 !ispunct(fmt[i + 1]))
521 return -EINVAL;
522
523 /* try our best to copy */
524 bufs[fmt_cnt][0] = 0;
525 strncpy_from_unsafe(bufs[fmt_cnt],
526 (void *) (long) args[fmt_cnt],
527 MAX_SEQ_PRINTF_STR_LEN);
528 params[fmt_cnt] = (u64)(long)bufs[fmt_cnt];
529
530 fmt_cnt++;
531 continue;
532 }
533
534 if (fmt[i] == 'p') {
535 if (fmt[i + 1] == 0 ||
536 fmt[i + 1] == 'K' ||
537 fmt[i + 1] == 'x') {
538 /* just kernel pointers */
539 params[fmt_cnt] = args[fmt_cnt];
540 fmt_cnt++;
541 continue;
542 }
543
544 /* only support "%pI4", "%pi4", "%pI6" and "pi6". */
545 if (fmt[i + 1] != 'i' && fmt[i + 1] != 'I')
546 return -EINVAL;
547 if (fmt[i + 2] != '4' && fmt[i + 2] != '6')
548 return -EINVAL;
549
550 copy_size = (fmt[i + 2] == '4') ? 4 : 16;
551
552 /* try our best to copy */
553 probe_kernel_read(bufs[fmt_cnt],
554 (void *) (long) args[fmt_cnt], copy_size);
555 params[fmt_cnt] = (u64)(long)bufs[fmt_cnt];
556
557 i += 2;
558 fmt_cnt++;
559 continue;
560 }
561
562 if (fmt[i] == 'l') {
563 i++;
564 if (fmt[i] == 'l')
565 i++;
566 }
567
568 if (fmt[i] != 'i' && fmt[i] != 'd' &&
569 fmt[i] != 'u' && fmt[i] != 'x')
570 return -EINVAL;
571
572 params[fmt_cnt] = args[fmt_cnt];
573 fmt_cnt++;
574 }
575
576 /* Maximumly we can have MAX_SEQ_PRINTF_VARARGS parameter, just give
577 * all of them to seq_printf().
578 */
579 seq_printf(m, fmt, params[0], params[1], params[2], params[3],
580 params[4], params[5], params[6], params[7], params[8],
581 params[9], params[10], params[11]);
582
583 return seq_has_overflowed(m) ? -EOVERFLOW : 0;
584 }
585
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 54692 bytes --]
next prev parent reply other threads:[~2020-04-28 6:03 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-27 20:12 [PATCH bpf-next v1 00/19] bpf: implement bpf iterator for kernel data Yonghong Song
2020-04-27 20:12 ` [PATCH bpf-next v1 01/19] net: refactor net assignment for seq_net_private structure Yonghong Song
2020-04-29 5:38 ` Andrii Nakryiko
2020-04-27 20:12 ` [PATCH bpf-next v1 02/19] bpf: implement an interface to register bpf_iter targets Yonghong Song
2020-04-28 16:20 ` Martin KaFai Lau
2020-04-28 16:50 ` Yonghong Song
2020-04-27 20:12 ` [PATCH bpf-next v1 03/19] bpf: add bpf_map iterator Yonghong Song
2020-04-29 0:37 ` Martin KaFai Lau
2020-04-29 0:48 ` Alexei Starovoitov
2020-04-29 1:15 ` Yonghong Song
2020-04-29 2:44 ` Alexei Starovoitov
2020-04-29 5:09 ` Yonghong Song
2020-04-29 6:08 ` Andrii Nakryiko
2020-04-29 6:20 ` Yonghong Song
2020-04-29 6:30 ` Alexei Starovoitov
2020-04-29 6:40 ` Andrii Nakryiko
2020-04-29 6:44 ` Yonghong Song
2020-04-29 15:34 ` Alexei Starovoitov
2020-04-29 18:14 ` Yonghong Song
2020-04-29 19:19 ` Andrii Nakryiko
2020-04-29 20:15 ` Yonghong Song
2020-04-30 3:06 ` Alexei Starovoitov
2020-04-30 4:01 ` Yonghong Song
2020-04-29 6:34 ` Martin KaFai Lau
2020-04-29 6:51 ` Yonghong Song
2020-04-29 19:25 ` Andrii Nakryiko
2020-04-29 1:02 ` Yonghong Song
2020-04-29 6:04 ` Andrii Nakryiko
2020-04-27 20:12 ` [PATCH bpf-next v1 04/19] bpf: allow loading of a bpf_iter program Yonghong Song
2020-04-29 0:54 ` Martin KaFai Lau
2020-04-29 1:27 ` Yonghong Song
2020-04-27 20:12 ` [PATCH bpf-next v1 05/19] bpf: support bpf tracing/iter programs for BPF_LINK_CREATE Yonghong Song
2020-04-29 1:17 ` [Potential Spoof] " Martin KaFai Lau
2020-04-29 6:25 ` Andrii Nakryiko
2020-04-27 20:12 ` [PATCH bpf-next v1 06/19] bpf: support bpf tracing/iter programs for BPF_LINK_UPDATE Yonghong Song
2020-04-29 1:32 ` Martin KaFai Lau
2020-04-29 5:04 ` Yonghong Song
2020-04-29 5:58 ` Martin KaFai Lau
2020-04-29 6:32 ` Andrii Nakryiko
2020-04-29 6:41 ` Martin KaFai Lau
2020-04-27 20:12 ` [PATCH bpf-next v1 07/19] bpf: create anonymous bpf iterator Yonghong Song
2020-04-29 5:39 ` Martin KaFai Lau
2020-04-29 6:56 ` Andrii Nakryiko
2020-04-29 7:06 ` Yonghong Song
2020-04-29 18:16 ` Andrii Nakryiko
2020-04-29 18:46 ` Martin KaFai Lau
2020-04-29 19:20 ` Yonghong Song
2020-04-29 20:50 ` Martin KaFai Lau
2020-04-29 20:54 ` Yonghong Song
2020-04-29 19:39 ` Andrii Nakryiko
2020-04-27 20:12 ` [PATCH bpf-next v1 08/19] bpf: create file " Yonghong Song
2020-04-29 20:40 ` Andrii Nakryiko
2020-04-30 18:02 ` Yonghong Song
2020-04-27 20:12 ` [PATCH bpf-next v1 09/19] bpf: add PTR_TO_BTF_ID_OR_NULL support Yonghong Song
2020-04-29 20:46 ` Andrii Nakryiko
2020-04-29 20:51 ` Yonghong Song
2020-04-27 20:12 ` [PATCH bpf-next v1 10/19] bpf: add netlink and ipv6_route targets Yonghong Song
2020-04-28 19:49 ` kbuild test robot
2020-04-28 19:50 ` [RFC PATCH] bpf: __bpf_iter__netlink() can be static kbuild test robot
2020-04-27 20:12 ` [PATCH bpf-next v1 11/19] bpf: add task and task/file targets Yonghong Song
2020-04-30 2:08 ` Andrii Nakryiko
2020-05-01 17:23 ` Yonghong Song
2020-05-01 19:01 ` Andrii Nakryiko
2020-04-27 20:12 ` [PATCH bpf-next v1 12/19] bpf: add bpf_seq_printf and bpf_seq_write helpers Yonghong Song
2020-04-28 6:02 ` kbuild test robot [this message]
2020-04-28 16:35 ` Yonghong Song
2020-04-30 20:06 ` Andrii Nakryiko
2020-04-27 20:12 ` [PATCH bpf-next v1 13/19] bpf: handle spilled PTR_TO_BTF_ID properly when checking stack_boundary Yonghong Song
2020-04-27 20:12 ` [PATCH bpf-next v1 14/19] bpf: support variable length array in tracing programs Yonghong Song
2020-04-30 20:04 ` Andrii Nakryiko
2020-04-27 20:12 ` [PATCH bpf-next v1 15/19] tools/libbpf: add bpf_iter support Yonghong Song
2020-04-30 1:41 ` Andrii Nakryiko
2020-05-02 7:17 ` Yonghong Song
2020-04-27 20:12 ` [PATCH bpf-next v1 16/19] tools/bpftool: add bpf_iter support for bptool Yonghong Song
2020-04-28 9:27 ` Quentin Monnet
2020-04-28 17:35 ` Yonghong Song
2020-04-29 8:37 ` Quentin Monnet
2020-04-27 20:12 ` [PATCH bpf-next v1 17/19] tools/bpf: selftests: add iterator programs for ipv6_route and netlink Yonghong Song
2020-04-30 2:12 ` Andrii Nakryiko
2020-04-27 20:12 ` [PATCH bpf-next v1 18/19] tools/bpf: selftests: add iter progs for bpf_map/task/task_file Yonghong Song
2020-04-27 20:12 ` [PATCH bpf-next v1 19/19] tools/bpf: selftests: add bpf_iter selftests Yonghong Song
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=202004281302.DSoHBqoM%lkp@intel.com \
--to=lkp@intel$(echo .)com \
--cc=andriin@fb$(echo .)com \
--cc=ast@fb$(echo .)com \
--cc=bpf@vger$(echo .)kernel.org \
--cc=daniel@iogearbox$(echo .)net \
--cc=kafai@fb$(echo .)com \
--cc=kbuild-all@lists$(echo .)01.org \
--cc=kernel-team@fb$(echo .)com \
--cc=netdev@vger$(echo .)kernel.org \
--cc=yhs@fb$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox