[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <202110181835.qpa4kFFg-lkp@intel.com>
Date: Mon, 18 Oct 2021 18:09:04 +0800
From: kernel test robot <lkp@...el.com>
To: Qing Wang <wangqing@...o.com>,
"David S. Miller" <davem@...emloft.net>,
Jakub Kicinski <kuba@...nel.org>,
Alexei Starovoitov <ast@...nel.org>,
Daniel Borkmann <daniel@...earbox.net>,
Andrii Nakryiko <andrii@...nel.org>,
Martin KaFai Lau <kafai@...com>,
Song Liu <songliubraving@...com>, Yonghong Song <yhs@...com>,
John Fastabend <john.fastabend@...il.com>
Cc: llvm@...ts.linux.dev, kbuild-all@...ts.01.org,
netdev@...r.kernel.org
Subject: Re: [PATCH] net: bpf: switch over to memdup_user()
Hi Qing,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on bpf-next/master]
[also build test WARNING on bpf/master net-next/master net/master v5.15-rc6 next-20211015]
[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]
url: https://github.com/0day-ci/linux/commits/Qing-Wang/net-bpf-switch-over-to-memdup_user/20211018-160353
base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
config: hexagon-randconfig-r013-20211018 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project d245f2e8597bfb52c34810a328d42b990e4af1a4)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/0f26c48ef52a60e8ce1ec2eccf6cf0819ee1e8e8
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Qing-Wang/net-bpf-switch-over-to-memdup_user/20211018-160353
git checkout 0f26c48ef52a60e8ce1ec2eccf6cf0819ee1e8e8
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=hexagon
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>
All warnings (new ones prefixed by >>):
net/bpf/test_run.c:170:14: warning: no previous prototype for function 'bpf_fentry_test1' [-Wmissing-prototypes]
int noinline bpf_fentry_test1(int a)
^
net/bpf/test_run.c:170:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int noinline bpf_fentry_test1(int a)
^
static
net/bpf/test_run.c:175:14: warning: no previous prototype for function 'bpf_fentry_test2' [-Wmissing-prototypes]
int noinline bpf_fentry_test2(int a, u64 b)
^
net/bpf/test_run.c:175:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int noinline bpf_fentry_test2(int a, u64 b)
^
static
net/bpf/test_run.c:180:14: warning: no previous prototype for function 'bpf_fentry_test3' [-Wmissing-prototypes]
int noinline bpf_fentry_test3(char a, int b, u64 c)
^
net/bpf/test_run.c:180:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int noinline bpf_fentry_test3(char a, int b, u64 c)
^
static
net/bpf/test_run.c:185:14: warning: no previous prototype for function 'bpf_fentry_test4' [-Wmissing-prototypes]
int noinline bpf_fentry_test4(void *a, char b, int c, u64 d)
^
net/bpf/test_run.c:185:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int noinline bpf_fentry_test4(void *a, char b, int c, u64 d)
^
static
net/bpf/test_run.c:190:14: warning: no previous prototype for function 'bpf_fentry_test5' [-Wmissing-prototypes]
int noinline bpf_fentry_test5(u64 a, void *b, short c, int d, u64 e)
^
net/bpf/test_run.c:190:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int noinline bpf_fentry_test5(u64 a, void *b, short c, int d, u64 e)
^
static
net/bpf/test_run.c:195:14: warning: no previous prototype for function 'bpf_fentry_test6' [-Wmissing-prototypes]
int noinline bpf_fentry_test6(u64 a, void *b, short c, int d, void *e, u64 f)
^
net/bpf/test_run.c:195:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int noinline bpf_fentry_test6(u64 a, void *b, short c, int d, void *e, u64 f)
^
static
net/bpf/test_run.c:204:14: warning: no previous prototype for function 'bpf_fentry_test7' [-Wmissing-prototypes]
int noinline bpf_fentry_test7(struct bpf_fentry_test_t *arg)
^
net/bpf/test_run.c:204:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int noinline bpf_fentry_test7(struct bpf_fentry_test_t *arg)
^
static
net/bpf/test_run.c:209:14: warning: no previous prototype for function 'bpf_fentry_test8' [-Wmissing-prototypes]
int noinline bpf_fentry_test8(struct bpf_fentry_test_t *arg)
^
net/bpf/test_run.c:209:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int noinline bpf_fentry_test8(struct bpf_fentry_test_t *arg)
^
static
net/bpf/test_run.c:214:14: warning: no previous prototype for function 'bpf_modify_return_test' [-Wmissing-prototypes]
int noinline bpf_modify_return_test(int a, int *b)
^
net/bpf/test_run.c:214:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int noinline bpf_modify_return_test(int a, int *b)
^
static
net/bpf/test_run.c:220:14: warning: no previous prototype for function 'bpf_kfunc_call_test1' [-Wmissing-prototypes]
u64 noinline bpf_kfunc_call_test1(struct sock *sk, u32 a, u64 b, u32 c, u64 d)
^
net/bpf/test_run.c:220:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
u64 noinline bpf_kfunc_call_test1(struct sock *sk, u32 a, u64 b, u32 c, u64 d)
^
static
net/bpf/test_run.c:225:14: warning: no previous prototype for function 'bpf_kfunc_call_test2' [-Wmissing-prototypes]
int noinline bpf_kfunc_call_test2(struct sock *sk, u32 a, u32 b)
^
net/bpf/test_run.c:225:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int noinline bpf_kfunc_call_test2(struct sock *sk, u32 a, u32 b)
^
static
net/bpf/test_run.c:230:24: warning: no previous prototype for function 'bpf_kfunc_call_test3' [-Wmissing-prototypes]
struct sock * noinline bpf_kfunc_call_test3(struct sock *sk)
^
net/bpf/test_run.c:230:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
struct sock * noinline bpf_kfunc_call_test3(struct sock *sk)
^
static
>> net/bpf/test_run.c:363:11: warning: incompatible pointer to integer conversion returning 'void *' from a function with result type 'int' [-Wint-conversion]
return ERR_PTR(PTR_ERR(info.ctx));
^~~~~~~~~~~~~~~~~~~~~~~~~~
net/bpf/test_run.c:1052:11: warning: incompatible pointer to integer conversion returning 'void *' from a function with result type 'int' [-Wint-conversion]
return ERR_PTR(PTR_ERR(ctx));
^~~~~~~~~~~~~~~~~~~~~
14 warnings generated.
vim +363 net/bpf/test_run.c
336
337 int bpf_prog_test_run_raw_tp(struct bpf_prog *prog,
338 const union bpf_attr *kattr,
339 union bpf_attr __user *uattr)
340 {
341 void __user *ctx_in = u64_to_user_ptr(kattr->test.ctx_in);
342 __u32 ctx_size_in = kattr->test.ctx_size_in;
343 struct bpf_raw_tp_test_run_info info;
344 int cpu = kattr->test.cpu, err = 0;
345 int current_cpu;
346
347 /* doesn't support data_in/out, ctx_out, duration, or repeat */
348 if (kattr->test.data_in || kattr->test.data_out ||
349 kattr->test.ctx_out || kattr->test.duration ||
350 kattr->test.repeat)
351 return -EINVAL;
352
353 if (ctx_size_in < prog->aux->max_ctx_offset ||
354 ctx_size_in > MAX_BPF_FUNC_ARGS * sizeof(u64))
355 return -EINVAL;
356
357 if ((kattr->test.flags & BPF_F_TEST_RUN_ON_CPU) == 0 && cpu != 0)
358 return -EINVAL;
359
360 if (ctx_size_in) {
361 info.ctx = memdup_user(ctx_in, ctx_size_in);
362 if (IS_ERR(info.ctx))
> 363 return ERR_PTR(PTR_ERR(info.ctx));
364 } else {
365 info.ctx = NULL;
366 }
367
368 info.prog = prog;
369
370 current_cpu = get_cpu();
371 if ((kattr->test.flags & BPF_F_TEST_RUN_ON_CPU) == 0 ||
372 cpu == current_cpu) {
373 __bpf_prog_test_run_raw_tp(&info);
374 } else if (cpu >= nr_cpu_ids || !cpu_online(cpu)) {
375 /* smp_call_function_single() also checks cpu_online()
376 * after csd_lock(). However, since cpu is from user
377 * space, let's do an extra quick check to filter out
378 * invalid value before smp_call_function_single().
379 */
380 err = -ENXIO;
381 } else {
382 err = smp_call_function_single(cpu, __bpf_prog_test_run_raw_tp,
383 &info, 1);
384 }
385 put_cpu();
386
387 if (!err &&
388 copy_to_user(&uattr->test.retval, &info.retval, sizeof(u32)))
389 err = -EFAULT;
390
391 kfree(info.ctx);
392 return err;
393 }
394
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Download attachment ".config.gz" of type "application/gzip" (28111 bytes)
Powered by blists - more mailing lists