Hi Alexei,
I love your patch! Perhaps something to improve:
[auto build test WARNING on bpf/master]
url:
https://github.com/0day-ci/linux/commits/Alexei-Starovoitov/ftrace-Fix-mo...
base:
https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git master
config: i386-randconfig-s002-20210316 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-277-gc089cd2d-dirty
#
https://github.com/0day-ci/linux/commit/517b5af19a5e543f639389ecd65badacf...
git remote add linux-review
https://github.com/0day-ci/linux
git fetch --no-tags linux-review
Alexei-Starovoitov/ftrace-Fix-modify_ftrace_direct/20210317-031309
git checkout 517b5af19a5e543f639389ecd65badacf7523a69
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
kernel/trace/ftrace.c:302:5: warning: no previous prototype for
'__register_ftrace_function' [-Wmissing-prototypes]
302 | int __register_ftrace_function(struct ftrace_ops *ops)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/trace/ftrace.c:345:5: warning: no previous prototype for
'__unregister_ftrace_function' [-Wmissing-prototypes]
345 | int __unregister_ftrace_function(struct ftrace_ops *ops)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/trace/ftrace.c:584:5: warning: no previous prototype for
'ftrace_profile_pages_init' [-Wmissing-prototypes]
584 | int ftrace_profile_pages_init(struct ftrace_profile_stat *stat)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
kernel/trace/ftrace.c:3876:15: warning: no previous prototype for
'arch_ftrace_match_adjust' [-Wmissing-prototypes]
3876 | char * __weak arch_ftrace_match_adjust(char *str, const char *search)
| ^~~~~~~~~~~~~~~~~~~~~~~~
> kernel/trace/ftrace.c:5048:28: warning: no previous prototype for
'ftrace_alloc_direct_func' [-Wmissing-prototypes]
5048 | struct
ftrace_direct_func *ftrace_alloc_direct_func(unsigned long addr)
| ^~~~~~~~~~~~~~~~~~~~~~~~
sparse warnings: (new ones prefixed by >>)
kernel/trace/ftrace.c:118:59: sparse: sparse: incorrect type in initializer (different
address spaces) @@ expected struct ftrace_ops [noderef] __rcu *[addressable]
[toplevel] ftrace_ops_list @@ got struct ftrace_ops * @@
kernel/trace/ftrace.c:118:59: sparse: expected struct ftrace_ops [noderef] __rcu
*[addressable] [toplevel] ftrace_ops_list
kernel/trace/ftrace.c:118:59: sparse: got struct ftrace_ops *
kernel/trace/ftrace.c:202:49: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct ftrace_ops *ops @@ got struct ftrace_ops
[noderef] __rcu *[addressable] [toplevel] ftrace_ops_list @@
kernel/trace/ftrace.c:202:49: sparse: expected struct ftrace_ops *ops
kernel/trace/ftrace.c:202:49: sparse: got struct ftrace_ops [noderef] __rcu
*[addressable] [toplevel] ftrace_ops_list
kernel/trace/ftrace.c:285:23: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_ops [noderef] __rcu * @@ got struct
ftrace_ops * @@
kernel/trace/ftrace.c:285:23: sparse: expected struct ftrace_ops [noderef] __rcu *
kernel/trace/ftrace.c:285:23: sparse: got struct ftrace_ops *
kernel/trace/ftrace.c:289:16: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_ops **p @@ got struct ftrace_ops
[noderef] __rcu **list @@
kernel/trace/ftrace.c:289:16: sparse: expected struct ftrace_ops **p
kernel/trace/ftrace.c:289:16: sparse: got struct ftrace_ops [noderef] __rcu **list
kernel/trace/ftrace.c:289:50: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_ops **p @@ got struct ftrace_ops
[noderef] __rcu ** @@
kernel/trace/ftrace.c:289:50: sparse: expected struct ftrace_ops **p
kernel/trace/ftrace.c:289:50: sparse: got struct ftrace_ops [noderef] __rcu **
kernel/trace/ftrace.c:296:12: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_ops * @@ got struct ftrace_ops [noderef]
__rcu *next @@
kernel/trace/ftrace.c:296:12: sparse: expected struct ftrace_ops *
kernel/trace/ftrace.c:296:12: sparse: got struct ftrace_ops [noderef] __rcu *next
kernel/trace/ftrace.c:584:5: sparse: sparse: symbol 'ftrace_profile_pages_init'
was not declared. Should it be static?
kernel/trace/ftrace.c:1040:43: sparse: sparse: incorrect type in initializer (different
address spaces) @@ expected struct ftrace_hash [noderef] __rcu *notrace_hash @@
got struct ftrace_hash * @@
kernel/trace/ftrace.c:1040:43: sparse: expected struct ftrace_hash [noderef] __rcu
*notrace_hash
kernel/trace/ftrace.c:1040:43: sparse: got struct ftrace_hash *
kernel/trace/ftrace.c:1041:43: sparse: sparse: incorrect type in initializer (different
address spaces) @@ expected struct ftrace_hash [noderef] __rcu *filter_hash @@ got
struct ftrace_hash * @@
kernel/trace/ftrace.c:1041:43: sparse: expected struct ftrace_hash [noderef] __rcu
*filter_hash
kernel/trace/ftrace.c:1041:43: sparse: got struct ftrace_hash *
kernel/trace/ftrace.c:1259:40: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *filter_hash @@
kernel/trace/ftrace.c:1259:40: sparse: expected struct ftrace_hash *hash
kernel/trace/ftrace.c:1259:40: sparse: got struct ftrace_hash [noderef] __rcu
*filter_hash
kernel/trace/ftrace.c:1260:40: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *notrace_hash @@
kernel/trace/ftrace.c:1260:40: sparse: expected struct ftrace_hash *hash
kernel/trace/ftrace.c:1260:40: sparse: got struct ftrace_hash [noderef] __rcu
*notrace_hash
kernel/trace/ftrace.c:1957:54: sparse: sparse: incorrect type in initializer (different
address spaces) @@ expected struct ftrace_hash *old_hash @@ got struct ftrace_hash
[noderef] __rcu *filter_hash @@
kernel/trace/ftrace.c:1957:54: sparse: expected struct ftrace_hash *old_hash
kernel/trace/ftrace.c:1957:54: sparse: got struct ftrace_hash [noderef] __rcu
*filter_hash
kernel/trace/ftrace.c:1441:9: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/trace/ftrace.c:1441:9: sparse: struct ftrace_hash [noderef] __rcu *
kernel/trace/ftrace.c:1441:9: sparse: struct ftrace_hash *
kernel/trace/ftrace.c:1457:39: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *filter_hash @@
kernel/trace/ftrace.c:1458:40: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *filter_hash @@
kernel/trace/ftrace.c:1459:40: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *notrace_hash @@
kernel/trace/ftrace.c:1460:42: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *notrace_hash @@
kernel/trace/ftrace.c:1614:18: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_ops *ops @@ got struct ftrace_ops
[noderef] __rcu *[addressable] [toplevel] ftrace_ops_list @@
kernel/trace/ftrace.c:1615:43: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_ops *ops @@ got struct ftrace_ops
[noderef] __rcu *next @@
kernel/trace/ftrace.c:1663:22: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *filter_hash @@
kernel/trace/ftrace.c:1664:28: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_hash *other_hash @@ got struct
ftrace_hash [noderef] __rcu *notrace_hash @@
kernel/trace/ftrace.c:1669:22: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *notrace_hash @@
kernel/trace/ftrace.c:1670:28: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_hash *other_hash @@ got struct
ftrace_hash [noderef] __rcu *filter_hash @@
kernel/trace/ftrace.c:1935:50: sparse: sparse: incorrect type in initializer (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *filter_hash @@
kernel/trace/ftrace.c:1946:50: sparse: sparse: incorrect type in initializer (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *filter_hash @@
kernel/trace/ftrace.c:3295:14: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *filter_hash @@
kernel/trace/ftrace.c:3312:22: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *filter_hash @@
kernel/trace/ftrace.c:3787:22: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *notrace_hash @@
kernel/trace/ftrace.c:3790:22: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *filter_hash @@
kernel/trace/ftrace.c:4191:27: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_hash **orig_hash @@ got struct
ftrace_hash [noderef] __rcu ** @@
kernel/trace/ftrace.c:4193:27: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_hash **orig_hash @@ got struct
ftrace_hash [noderef] __rcu ** @@
kernel/trace/ftrace.c:4565:19: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_hash **orig_hash @@ got struct
ftrace_hash [noderef] __rcu ** @@
kernel/trace/ftrace.c:4707:19: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_hash **orig_hash @@ got struct
ftrace_hash [noderef] __rcu ** @@
kernel/trace/ftrace.c:4713:34: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_hash [noderef] __rcu *filter_hash @@ got
struct ftrace_hash *[assigned] old_hash @@
kernel/trace/ftrace.c:4965:27: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_hash **orig_hash @@ got struct
ftrace_hash [noderef] __rcu ** @@
kernel/trace/ftrace.c:4967:27: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_hash **orig_hash @@ got struct
ftrace_hash [noderef] __rcu ** @@
> kernel/trace/ftrace.c:5048:27: sparse: sparse: symbol
'ftrace_alloc_direct_func' was not declared. Should it be static?
kernel/trace/ftrace.c:5576:35: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_hash [noderef] __rcu *extern [addressable]
[toplevel] ftrace_graph_hash @@ got struct ftrace_hash *[assigned] hash @@
kernel/trace/ftrace.c:5578:43: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_hash [noderef] __rcu *extern [addressable]
[toplevel] ftrace_graph_notrace_hash @@ got struct ftrace_hash *[assigned] hash @@
kernel/trace/ftrace.c:5636:35: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_hash **orig_hash @@ got struct
ftrace_hash [noderef] __rcu ** @@
kernel/trace/ftrace.c:5640:35: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_hash **orig_hash @@ got struct
ftrace_hash [noderef] __rcu ** @@
kernel/trace/ftrace.c:5694:47: sparse: sparse: incorrect type in initializer (different
address spaces) @@ expected struct ftrace_hash [noderef] __rcu *[addressable]
[toplevel] ftrace_graph_hash @@ got struct ftrace_hash * @@
kernel/trace/ftrace.c:5695:55: sparse: sparse: incorrect type in initializer (different
address spaces) @@ expected struct ftrace_hash [noderef] __rcu *[addressable]
[toplevel] ftrace_graph_notrace_hash @@ got struct ftrace_hash * @@
kernel/trace/ftrace.c:6311:18: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_ops *ops @@ got struct ftrace_ops
[noderef] __rcu *[addressable] [toplevel] ftrace_ops_list @@
kernel/trace/ftrace.c:6311:66: sparse: sparse: incorrect type in assignment (different
address spaces) @@ expected struct ftrace_ops *ops @@ got struct ftrace_ops
[noderef] __rcu *next @@
kernel/trace/ftrace.c:6363:59: sparse: sparse: incorrect type in argument 2 (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *filter_hash @@
kernel/trace/ftrace.c:6364:59: sparse: sparse: incorrect type in argument 2 (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *notrace_hash @@
kernel/trace/ftrace.c:6734:62: sparse: sparse: incorrect type in argument 2 (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *filter_hash @@
kernel/trace/ftrace.c:6735:62: sparse: sparse: incorrect type in argument 2 (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *notrace_hash @@
kernel/trace/ftrace.c:6781:36: sparse: sparse: incompatible types in comparison
expression (different address spaces):
kernel/trace/ftrace.c:6781:36: sparse: struct ftrace_ops [noderef] __rcu *
kernel/trace/ftrace.c:6781:36: sparse: struct ftrace_ops *
kernel/trace/ftrace.c:200:20: sparse: sparse: dereference of noderef expression
kernel/trace/ftrace.c:200:20: sparse: sparse: dereference of noderef expression
kernel/trace/ftrace.c:200:20: sparse: sparse: dereference of noderef expression
kernel/trace/ftrace.c:3084:46: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *filter_hash @@
kernel/trace/ftrace.c:3084:46: sparse: expected struct ftrace_hash *hash
kernel/trace/ftrace.c:3084:46: sparse: got struct ftrace_hash [noderef] __rcu
*filter_hash
kernel/trace/ftrace.c:3085:47: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *filter_hash @@
kernel/trace/ftrace.c:3085:47: sparse: expected struct ftrace_hash *hash
kernel/trace/ftrace.c:3085:47: sparse: got struct ftrace_hash [noderef] __rcu
*filter_hash
kernel/trace/ftrace.c:3089:44: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *notrace_hash @@
kernel/trace/ftrace.c:3089:44: sparse: expected struct ftrace_hash *hash
kernel/trace/ftrace.c:3089:44: sparse: got struct ftrace_hash [noderef] __rcu
*notrace_hash
kernel/trace/ftrace.c:3061:48: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *filter_hash @@
kernel/trace/ftrace.c:3061:48: sparse: expected struct ftrace_hash *hash
kernel/trace/ftrace.c:3061:48: sparse: got struct ftrace_hash [noderef] __rcu
*filter_hash
kernel/trace/ftrace.c:3062:49: sparse: sparse: incorrect type in argument 1 (different
address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash
[noderef] __rcu *notrace_hash @@
kernel/trace/ftrace.c:3062:49: sparse: expected struct ftrace_hash *hash
kernel/trace/ftrace.c:3062:49: sparse: got struct ftrace_hash [noderef] __rcu
*notrace_hash
Please review and possibly fold the followup patch.
vim +/ftrace_alloc_direct_func +5048 kernel/trace/ftrace.c
5047
5048 struct ftrace_direct_func *ftrace_alloc_direct_func(unsigned
long addr)
5049 {
5050 struct ftrace_direct_func *direct;
5051
5052 direct = kmalloc(sizeof(*direct), GFP_KERNEL);
5053 if (!direct)
5054 return NULL;
5055 direct->addr = addr;
5056 direct->count = 0;
5057 list_add_rcu(&direct->next, &ftrace_direct_funcs);
5058 ftrace_direct_func_count++;
5059 return direct;
5060 }
5061
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org