* kernel/trace/ftrace.c:6651:40: sparse: sparse: incorrect type in assignment (different address spaces)
@ 2026-09-10 23:59 kernel test robot
2026-09-11 3:14 ` Leon Hwang
0 siblings, 1 reply; 3+ messages in thread
From: kernel test robot @ 2026-09-10 23:59 UTC (permalink / raw)
To: Leon Hwang; +Cc: oe-kbuild-all, linux-kernel, Steven Rostedt
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 50d05c7c76c96b90462f24debacca971d2e86713
commit: 092f8ec7dbdc71f5bde9bb0f8dead384d2115a44 ftrace: Protect direct_functions in update_ftrace_direct_mod
date: 5 weeks ago
config: x86_64-randconfig-122-20260911 (https://download.01.org/0day-ci/archive/20260911/202609110704.Q3M5vCDV-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260911/202609110704.Q3M5vCDV-lkp@intel.com/reproduce)
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
| Fixes: 092f8ec7dbdc ("ftrace: Protect direct_functions in update_ftrace_direct_mod")
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202609110704.Q3M5vCDV-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
kernel/trace/ftrace.c:1093:43: sparse: expected struct ftrace_hash [noderef] __rcu *notrace_hash
kernel/trace/ftrace.c:1093:43: sparse: got struct ftrace_hash *
kernel/trace/ftrace.c:1094: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:1094:43: sparse: expected struct ftrace_hash [noderef] __rcu *filter_hash
kernel/trace/ftrace.c:1094:43: sparse: got struct ftrace_hash *
kernel/trace/ftrace.c:1350: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:1350:40: sparse: expected struct ftrace_hash *hash
kernel/trace/ftrace.c:1350:40: sparse: got struct ftrace_hash [noderef] __rcu *filter_hash
kernel/trace/ftrace.c:1351: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:1351:40: sparse: expected struct ftrace_hash *hash
kernel/trace/ftrace.c:1351:40: sparse: got struct ftrace_hash [noderef] __rcu *notrace_hash
kernel/trace/ftrace.c:1352:37: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash [noderef] __rcu *filter_hash @@ got struct ftrace_hash * @@
kernel/trace/ftrace.c:1352:37: sparse: expected struct ftrace_hash [noderef] __rcu *filter_hash
kernel/trace/ftrace.c:1352:37: sparse: got struct ftrace_hash *
kernel/trace/ftrace.c:1353:38: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash [noderef] __rcu *notrace_hash @@ got struct ftrace_hash * @@
kernel/trace/ftrace.c:1353:38: sparse: expected struct ftrace_hash [noderef] __rcu *notrace_hash
kernel/trace/ftrace.c:1353:38: sparse: got struct ftrace_hash *
kernel/trace/ftrace.c:2165: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:2165:54: sparse: expected struct ftrace_hash *old_hash
kernel/trace/ftrace.c:2165:54: sparse: got struct ftrace_hash [noderef] __rcu *filter_hash
kernel/trace/ftrace.c:1557:9: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/trace/ftrace.c:1557:9: sparse: struct ftrace_hash [noderef] __rcu *
kernel/trace/ftrace.c:1557:9: sparse: struct ftrace_hash *
kernel/trace/ftrace.c:1573: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:1574: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:1575: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:1576: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:1747: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:1748: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:1809: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:1810:22: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash *notrace_hash @@ got struct ftrace_hash [noderef] __rcu *notrace_hash @@
kernel/trace/ftrace.c:2143: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:2154: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:2637:53: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct ftrace_hash [noderef] __rcu *static [toplevel] direct_functions @@ got struct ftrace_hash * @@
kernel/trace/ftrace.c:3450:51: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct ftrace_hash *B @@ got struct ftrace_hash [noderef] __rcu *filter_hash @@
kernel/trace/ftrace.c:3451:66: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct ftrace_hash **orig_hash @@ got struct ftrace_hash [noderef] __rcu ** @@
kernel/trace/ftrace.c:3457:52: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct ftrace_hash *B @@ got struct ftrace_hash [noderef] __rcu *notrace_hash @@
kernel/trace/ftrace.c:3458:66: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct ftrace_hash **orig_hash @@ got struct ftrace_hash [noderef] __rcu ** @@
kernel/trace/ftrace.c:3471:41: 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:3472:51: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct ftrace_hash *src @@ got struct ftrace_hash [noderef] __rcu *filter_hash @@
kernel/trace/ftrace.c:3475:52: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct ftrace_hash *notrace_hash @@ got struct ftrace_hash [noderef] __rcu *notrace_hash @@
kernel/trace/ftrace.c:3479:52: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct ftrace_hash *src @@ got struct ftrace_hash [noderef] __rcu *notrace_hash @@
kernel/trace/ftrace.c:3494: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:3495:42: 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:3503:17: 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:3509:81: 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:3513:54: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct ftrace_hash *notrace_hash @@ got struct ftrace_hash [noderef] __rcu *notrace_hash @@
kernel/trace/ftrace.c:3515:56: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct ftrace_hash *new_hash @@ got struct ftrace_hash [noderef] __rcu *filter_hash @@
kernel/trace/ftrace.c:3545:60: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected struct ftrace_hash *new_hash1 @@ got struct ftrace_hash [noderef] __rcu *notrace_hash @@
kernel/trace/ftrace.c:3546:49: sparse: sparse: incorrect type in argument 3 (different address spaces) @@ expected struct ftrace_hash *new_hash2 @@ got struct ftrace_hash [noderef] __rcu *notrace_hash @@
kernel/trace/ftrace.c:3585:45: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash [noderef] __rcu *filter_hash @@ got struct ftrace_hash * @@
kernel/trace/ftrace.c:3587:46: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash [noderef] __rcu *notrace_hash @@ got struct ftrace_hash * @@
kernel/trace/ftrace.c:3589:48: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash [noderef] __rcu *filter_hash @@ got struct ftrace_hash * @@
kernel/trace/ftrace.c:3591:49: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash [noderef] __rcu *notrace_hash @@ got struct ftrace_hash * @@
kernel/trace/ftrace.c:3597:17: 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:3598:17: 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:3604:34: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash *save_filter_hash @@ got struct ftrace_hash [noderef] __rcu *filter_hash @@
kernel/trace/ftrace.c:3605:35: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash *save_notrace_hash @@ got struct ftrace_hash [noderef] __rcu *notrace_hash @@
kernel/trace/ftrace.c:3607:45: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash [noderef] __rcu *filter_hash @@ got struct ftrace_hash *[addressable] filter_hash @@
kernel/trace/ftrace.c:3608:46: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash [noderef] __rcu *notrace_hash @@ got struct ftrace_hash *[addressable] notrace_hash @@
kernel/trace/ftrace.c:3613:53: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash [noderef] __rcu *filter_hash @@ got struct ftrace_hash *save_filter_hash @@
kernel/trace/ftrace.c:3614:54: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash [noderef] __rcu *notrace_hash @@ got struct ftrace_hash *save_notrace_hash @@
kernel/trace/ftrace.c:3661:31: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash [noderef] __rcu *filter_hash @@ got struct ftrace_hash * @@
kernel/trace/ftrace.c:3662:32: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash [noderef] __rcu *notrace_hash @@ got struct ftrace_hash * @@
kernel/trace/ftrace.c:3677:59: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash [noderef] __rcu *[addressable] filter_hash @@
kernel/trace/ftrace.c:3678:59: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash [noderef] __rcu *[addressable] notrace_hash @@
kernel/trace/ftrace.c:3683:43: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash [noderef] __rcu *[addressable] filter_hash @@
kernel/trace/ftrace.c:3684:43: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash [noderef] __rcu *[addressable] notrace_hash @@
kernel/trace/ftrace.c:3686:39: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash [noderef] __rcu *[addressable] filter_hash @@ got struct ftrace_hash * @@
kernel/trace/ftrace.c:3687:40: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash [noderef] __rcu *[addressable] notrace_hash @@ got struct ftrace_hash * @@
kernel/trace/ftrace.c:3729: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:3730:48: 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:3731:45: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash [noderef] __rcu *filter_hash @@ got struct ftrace_hash * @@
kernel/trace/ftrace.c:3732:46: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash [noderef] __rcu *notrace_hash @@ got struct ftrace_hash * @@
kernel/trace/ftrace.c:4022: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:4039: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:4728: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:4731: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:5142: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:5144: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:5524: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:5668: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:5674: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:5941: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:5943: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:6024:50: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash [noderef] __rcu *static [addressable] [toplevel] direct_functions @@
kernel/trace/ftrace.c:6027:51: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash [noderef] __rcu *static [addressable] [toplevel] direct_functions @@
kernel/trace/ftrace.c:6043: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:6087: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:6137:19: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash *free_hash @@ got struct ftrace_hash [noderef] __rcu *static [addressable] [toplevel] direct_functions @@
kernel/trace/ftrace.c:6202: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:6240:52: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash [noderef] __rcu *static [addressable] [assigned] [toplevel] direct_functions @@
kernel/trace/ftrace.c:6393:48: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct ftrace_hash *hash @@ got struct ftrace_hash [noderef] __rcu *static [addressable] [assigned] [toplevel] direct_functions @@
kernel/trace/ftrace.c:6398:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash *old_filter_hash @@ got struct ftrace_hash [noderef] __rcu * @@
kernel/trace/ftrace.c:6414:41: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected struct ftrace_hash *a @@ got struct ftrace_hash [noderef] __rcu *static [addressable] [assigned] [toplevel] direct_functions @@
kernel/trace/ftrace.c:6418:30: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash *old_direct_functions @@ got struct ftrace_hash [noderef] __rcu *static [addressable] [assigned] [toplevel] direct_functions @@
kernel/trace/ftrace.c:6425:45: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash [noderef] __rcu *filter_hash @@ got struct ftrace_hash *[assigned] new_filter_hash @@
kernel/trace/ftrace.c:6430:53: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash [noderef] __rcu *filter_hash @@ got struct ftrace_hash *old_filter_hash @@
kernel/trace/ftrace.c:6534:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash *old_filter_hash @@ got struct ftrace_hash [noderef] __rcu * @@
kernel/trace/ftrace.c:6645: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:6651:40: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct ftrace_hash [noderef] __rcu *filter_hash @@ got struct ftrace_hash *hash @@
kernel/trace/ftrace.c:6948: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:6950: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:7021: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:7029: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:7094: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:7095: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:7815: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:7816: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:7820: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:7838: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:7838: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:7890: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:7891: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:8283: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:8284: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:8328:36: sparse: sparse: incompatible types in comparison expression (different address spaces):
kernel/trace/ftrace.c:8328:36: sparse: struct ftrace_ops [noderef] __rcu *
kernel/trace/ftrace.c:8328:36: sparse: struct ftrace_ops *
kernel/trace/ftrace.c:9106: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:9106:14: sparse: expected struct ftrace_hash *hash
kernel/trace/ftrace.c:9106:14: sparse: got struct ftrace_hash [noderef] __rcu *filter_hash
kernel/trace/ftrace.c:9155: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:9155:14: sparse: expected struct ftrace_hash *hash
kernel/trace/ftrace.c:9155:14: sparse: got struct ftrace_hash [noderef] __rcu *filter_hash
kernel/trace/ftrace.c:230:20: sparse: sparse: dereference of noderef expression
kernel/trace/ftrace.c:230:20: sparse: sparse: dereference of noderef expression
kernel/trace/ftrace.c:230:20: sparse: sparse: dereference of noderef expression
kernel/trace/ftrace.c:3505:29: sparse: sparse: dereference of noderef expression
kernel/trace/ftrace.c:3505:29: sparse: sparse: dereference of noderef expression
kernel/trace/ftrace.c:3505:29: sparse: sparse: dereference of noderef expression
kernel/trace/ftrace.c:3505:29: sparse: sparse: dereference of noderef expression
kernel/trace/ftrace.c:3505:29: sparse: sparse: dereference of noderef expression
kernel/trace/ftrace.c:3505:29: sparse: sparse: dereference of noderef expression
kernel/trace/ftrace.c:3539:29: sparse: sparse: dereference of noderef expression
kernel/trace/ftrace.c:3539:29: sparse: sparse: dereference of noderef expression
kernel/trace/ftrace.c:3539:29: sparse: sparse: dereference of noderef expression
kernel/trace/ftrace.c:3539:29: sparse: sparse: dereference of noderef expression
kernel/trace/ftrace.c:3539:29: sparse: sparse: dereference of noderef expression
kernel/trace/ftrace.c:3539:29: sparse: sparse: dereference of noderef expression
kernel/trace/ftrace.c:6105:30: sparse: sparse: dereference of noderef expression
kernel/trace/ftrace.c:6114:21: sparse: sparse: dereference of noderef expression
kernel/trace/ftrace.c:6116:17: sparse: sparse: dereference of noderef expression
kernel/trace/ftrace.c:3810: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:3810:48: sparse: expected struct ftrace_hash *hash
kernel/trace/ftrace.c:3810:48: sparse: got struct ftrace_hash [noderef] __rcu *filter_hash
kernel/trace/ftrace.c:3811: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:3811:49: sparse: expected struct ftrace_hash *hash
kernel/trace/ftrace.c:3811:49: sparse: got struct ftrace_hash [noderef] __rcu *notrace_hash
vim +6651 kernel/trace/ftrace.c
8d2c1233f37149 Jiri Olsa 2025-12-30 6594
e93672f770d72f Jiri Olsa 2025-12-30 6595 /**
e93672f770d72f Jiri Olsa 2025-12-30 6596 * update_ftrace_direct_mod - Updates @ops by modifing its direct
e93672f770d72f Jiri Olsa 2025-12-30 6597 * callers provided in @hash
e93672f770d72f Jiri Olsa 2025-12-30 6598 * @ops: The address of the struct ftrace_ops object
e93672f770d72f Jiri Olsa 2025-12-30 6599 * @hash: The address of the struct ftrace_hash object
e93672f770d72f Jiri Olsa 2025-12-30 6600 * @do_direct_lock: If true lock the direct_mutex
e93672f770d72f Jiri Olsa 2025-12-30 6601 *
e93672f770d72f Jiri Olsa 2025-12-30 6602 * This is used to modify custom direct callers (ip -> addr) in
e93672f770d72f Jiri Olsa 2025-12-30 6603 * @ops specified via @hash.
e93672f770d72f Jiri Olsa 2025-12-30 6604 *
e93672f770d72f Jiri Olsa 2025-12-30 6605 * This can be called from within ftrace ops_func callback with
e93672f770d72f Jiri Olsa 2025-12-30 6606 * direct_mutex already locked, in which case @do_direct_lock
e93672f770d72f Jiri Olsa 2025-12-30 6607 * needs to be false.
e93672f770d72f Jiri Olsa 2025-12-30 6608 *
e93672f770d72f Jiri Olsa 2025-12-30 6609 * Returns: zero on success. Non zero on error, which includes:
e93672f770d72f Jiri Olsa 2025-12-30 6610 * -EINVAL - The @hash is empty
e93672f770d72f Jiri Olsa 2025-12-30 6611 * -EINVAL - The @ops is not registered
e93672f770d72f Jiri Olsa 2025-12-30 6612 */
e93672f770d72f Jiri Olsa 2025-12-30 6613 int update_ftrace_direct_mod(struct ftrace_ops *ops, struct ftrace_hash *hash, bool do_direct_lock)
e93672f770d72f Jiri Olsa 2025-12-30 6614 {
e93672f770d72f Jiri Olsa 2025-12-30 6615 struct ftrace_func_entry *entry, *tmp;
e93672f770d72f Jiri Olsa 2025-12-30 6616 static struct ftrace_ops tmp_ops = {
e93672f770d72f Jiri Olsa 2025-12-30 6617 .func = ftrace_stub,
e93672f770d72f Jiri Olsa 2025-12-30 6618 .flags = FTRACE_OPS_FL_STUB,
e93672f770d72f Jiri Olsa 2025-12-30 6619 };
092f8ec7dbdc71 Leon Hwang 2026-07-30 6620 struct ftrace_hash *direct_hash;
e93672f770d72f Jiri Olsa 2025-12-30 6621 struct ftrace_hash *orig_hash;
e93672f770d72f Jiri Olsa 2025-12-30 6622 unsigned long size, i;
e93672f770d72f Jiri Olsa 2025-12-30 6623 int err = -EINVAL;
e93672f770d72f Jiri Olsa 2025-12-30 6624
e93672f770d72f Jiri Olsa 2025-12-30 6625 if (!hash_count(hash))
e93672f770d72f Jiri Olsa 2025-12-30 6626 return -EINVAL;
e93672f770d72f Jiri Olsa 2025-12-30 6627 if (check_direct_multi(ops))
e93672f770d72f Jiri Olsa 2025-12-30 6628 return -EINVAL;
e93672f770d72f Jiri Olsa 2025-12-30 6629 if (!(ops->flags & FTRACE_OPS_FL_ENABLED))
e93672f770d72f Jiri Olsa 2025-12-30 6630 return -EINVAL;
e93672f770d72f Jiri Olsa 2025-12-30 6631
e93672f770d72f Jiri Olsa 2025-12-30 6632 /*
e93672f770d72f Jiri Olsa 2025-12-30 6633 * We can be called from within ops_func callback with direct_mutex
e93672f770d72f Jiri Olsa 2025-12-30 6634 * already taken.
e93672f770d72f Jiri Olsa 2025-12-30 6635 */
e93672f770d72f Jiri Olsa 2025-12-30 6636 if (do_direct_lock)
e93672f770d72f Jiri Olsa 2025-12-30 6637 mutex_lock(&direct_mutex);
092f8ec7dbdc71 Leon Hwang 2026-07-30 6638 else
092f8ec7dbdc71 Leon Hwang 2026-07-30 6639 lockdep_assert_held_once(&direct_mutex);
092f8ec7dbdc71 Leon Hwang 2026-07-30 6640
092f8ec7dbdc71 Leon Hwang 2026-07-30 6641 direct_hash = rcu_dereference_protected(direct_functions, lockdep_is_held(&direct_mutex));
092f8ec7dbdc71 Leon Hwang 2026-07-30 6642 if (direct_hash == EMPTY_HASH)
092f8ec7dbdc71 Leon Hwang 2026-07-30 6643 goto unlock;
e93672f770d72f Jiri Olsa 2025-12-30 6644
e93672f770d72f Jiri Olsa 2025-12-30 6645 orig_hash = ops->func_hash ? ops->func_hash->filter_hash : NULL;
e93672f770d72f Jiri Olsa 2025-12-30 6646 if (!orig_hash)
e93672f770d72f Jiri Olsa 2025-12-30 6647 goto unlock;
e93672f770d72f Jiri Olsa 2025-12-30 6648
50b35c9e50a865 Jiri Olsa 2026-03-12 6649 /* Enable the tmp_ops to have the same functions as the hash object. */
e93672f770d72f Jiri Olsa 2025-12-30 6650 ftrace_ops_init(&tmp_ops);
50b35c9e50a865 Jiri Olsa 2026-03-12 @6651 tmp_ops.func_hash->filter_hash = hash;
e93672f770d72f Jiri Olsa 2025-12-30 6652
e93672f770d72f Jiri Olsa 2025-12-30 6653 err = register_ftrace_function_nolock(&tmp_ops);
e93672f770d72f Jiri Olsa 2025-12-30 6654 if (err)
e93672f770d72f Jiri Olsa 2025-12-30 6655 goto unlock;
e93672f770d72f Jiri Olsa 2025-12-30 6656
e93672f770d72f Jiri Olsa 2025-12-30 6657 /*
e93672f770d72f Jiri Olsa 2025-12-30 6658 * Call __ftrace_hash_update_ipmodify() here, so that we can call
e93672f770d72f Jiri Olsa 2025-12-30 6659 * ops->ops_func for the ops. This is needed because the above
e93672f770d72f Jiri Olsa 2025-12-30 6660 * register_ftrace_function_nolock() worked on tmp_ops.
e93672f770d72f Jiri Olsa 2025-12-30 6661 */
e93672f770d72f Jiri Olsa 2025-12-30 6662 err = __ftrace_hash_update_ipmodify(ops, orig_hash, orig_hash, true);
e93672f770d72f Jiri Olsa 2025-12-30 6663 if (err)
e93672f770d72f Jiri Olsa 2025-12-30 6664 goto out;
e93672f770d72f Jiri Olsa 2025-12-30 6665
e93672f770d72f Jiri Olsa 2025-12-30 6666 /*
e93672f770d72f Jiri Olsa 2025-12-30 6667 * Now the ftrace_ops_list_func() is called to do the direct callers.
e93672f770d72f Jiri Olsa 2025-12-30 6668 * We can safely change the direct functions attached to each entry.
e93672f770d72f Jiri Olsa 2025-12-30 6669 */
e93672f770d72f Jiri Olsa 2025-12-30 6670 mutex_lock(&ftrace_lock);
e93672f770d72f Jiri Olsa 2025-12-30 6671
e93672f770d72f Jiri Olsa 2025-12-30 6672 size = 1 << hash->size_bits;
e93672f770d72f Jiri Olsa 2025-12-30 6673 for (i = 0; i < size; i++) {
e93672f770d72f Jiri Olsa 2025-12-30 6674 hlist_for_each_entry(entry, &hash->buckets[i], hlist) {
092f8ec7dbdc71 Leon Hwang 2026-07-30 6675 tmp = __ftrace_lookup_ip(direct_hash, entry->ip);
e93672f770d72f Jiri Olsa 2025-12-30 6676 if (!tmp)
e93672f770d72f Jiri Olsa 2025-12-30 6677 continue;
e93672f770d72f Jiri Olsa 2025-12-30 6678 tmp->direct = entry->direct;
e93672f770d72f Jiri Olsa 2025-12-30 6679 }
e93672f770d72f Jiri Olsa 2025-12-30 6680 }
e93672f770d72f Jiri Olsa 2025-12-30 6681
e93672f770d72f Jiri Olsa 2025-12-30 6682 mutex_unlock(&ftrace_lock);
e93672f770d72f Jiri Olsa 2025-12-30 6683
e93672f770d72f Jiri Olsa 2025-12-30 6684 out:
e93672f770d72f Jiri Olsa 2025-12-30 6685 /* Removing the tmp_ops will add the updated direct callers to the functions */
e93672f770d72f Jiri Olsa 2025-12-30 6686 unregister_ftrace_function(&tmp_ops);
e93672f770d72f Jiri Olsa 2025-12-30 6687
e93672f770d72f Jiri Olsa 2025-12-30 6688 unlock:
e93672f770d72f Jiri Olsa 2025-12-30 6689 if (do_direct_lock)
e93672f770d72f Jiri Olsa 2025-12-30 6690 mutex_unlock(&direct_mutex);
e93672f770d72f Jiri Olsa 2025-12-30 6691 return err;
e93672f770d72f Jiri Olsa 2025-12-30 6692 }
e93672f770d72f Jiri Olsa 2025-12-30 6693
:::::: The code at line 6651 was first introduced by commit
:::::: 50b35c9e50a865600344ab1d8f9a8b3384d7e63d ftrace: Use hash argument for tmp_ops in update_ftrace_direct_mod
:::::: TO: Jiri Olsa <jolsa@kernel.org>
:::::: CC: Steven Rostedt (Google) <rostedt@goodmis.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: kernel/trace/ftrace.c:6651:40: sparse: sparse: incorrect type in assignment (different address spaces)
2026-09-10 23:59 kernel/trace/ftrace.c:6651:40: sparse: sparse: incorrect type in assignment (different address spaces) kernel test robot
@ 2026-09-11 3:14 ` Leon Hwang
2026-09-11 13:28 ` Steven Rostedt
0 siblings, 1 reply; 3+ messages in thread
From: Leon Hwang @ 2026-09-11 3:14 UTC (permalink / raw)
To: kernel test robot; +Cc: oe-kbuild-all, linux-kernel, Steven Rostedt, Jiri Olsa
On 11/9/26 07:59, kernel test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: 50d05c7c76c96b90462f24debacca971d2e86713
> commit: 092f8ec7dbdc71f5bde9bb0f8dead384d2115a44 ftrace: Protect direct_functions in update_ftrace_direct_mod
> date: 5 weeks ago
> config: x86_64-randconfig-122-20260911 (https://download.01.org/0day-ci/archive/20260911/202609110704.Q3M5vCDV-lkp@intel.com/config)
> compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
> sparse: v0.6.5-rc1
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260911/202609110704.Q3M5vCDV-lkp@intel.com/reproduce)
>
> 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
> | Fixes: 092f8ec7dbdc ("ftrace: Protect direct_functions in update_ftrace_direct_mod")
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202609110704.Q3M5vCDV-lkp@intel.com/
>
Hi,
I reproduced the warning with sparse v0.6.5-rc1. The patch below fixes
it locally.
Could you please retest it with the reported config?
Thanks,
Leon
---
From 03079b720a8cba88b3da579acfbcf88d983a838d Mon Sep 17 00:00:00 2001
From: Leon Hwang <leon.hwang@linux.dev>
Date: Fri, 11 Sep 2026 10:43:13 +0800
Subject: [PATCH] ftrace: Use rcu_assign_pointer() for tmp_ops filter hash
tmp_ops.func_hash->filter_hash is annotated __rcu, but
update_ftrace_direct_mod() assigns hash to it directly. Sparse reports an
address-space mismatch.
Use rcu_assign_pointer() for the assignment.
Fixes: 50b35c9e50a8 ("ftrace: Use hash argument for tmp_ops in
update_ftrace_direct_mod")
Reported-by: kernel test robot <lkp@intel.com>
Closes:
https://lore.kernel.org/oe-kbuild-all/202609110704.Q3M5vCDV-lkp@intel.com/
Signed-off-by: Leon Hwang <leon.hwang@linux.dev>
---
kernel/trace/ftrace.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 53d5db60bfa5..673a54fdf392 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -6675,7 +6675,7 @@ int update_ftrace_direct_mod(struct ftrace_ops
*ops, struct ftrace_hash *hash, b
/* Enable the tmp_ops to have the same functions as the hash
object. */
ftrace_ops_init(&tmp_ops);
- tmp_ops.func_hash->filter_hash = hash;
+ rcu_assign_pointer(tmp_ops.func_hash->filter_hash, hash);
err = register_ftrace_function_nolock(&tmp_ops);
if (err)
--
2.55.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: kernel/trace/ftrace.c:6651:40: sparse: sparse: incorrect type in assignment (different address spaces)
2026-09-11 3:14 ` Leon Hwang
@ 2026-09-11 13:28 ` Steven Rostedt
0 siblings, 0 replies; 3+ messages in thread
From: Steven Rostedt @ 2026-09-11 13:28 UTC (permalink / raw)
To: Leon Hwang; +Cc: kernel test robot, oe-kbuild-all, linux-kernel, Jiri Olsa
Can you send this as a proper patch to linux-trace-kernel@vger.kernel.org
Thanks,
-- Steve
On Fri, 11 Sep 2026 11:14:00 +0800
Leon Hwang <leon.hwang@linux.dev> wrote:
> >From 03079b720a8cba88b3da579acfbcf88d983a838d Mon Sep 17 00:00:00 2001
> From: Leon Hwang <leon.hwang@linux.dev>
> Date: Fri, 11 Sep 2026 10:43:13 +0800
> Subject: [PATCH] ftrace: Use rcu_assign_pointer() for tmp_ops filter hash
>
> tmp_ops.func_hash->filter_hash is annotated __rcu, but
> update_ftrace_direct_mod() assigns hash to it directly. Sparse reports an
> address-space mismatch.
>
> Use rcu_assign_pointer() for the assignment.
>
> Fixes: 50b35c9e50a8 ("ftrace: Use hash argument for tmp_ops in
> update_ftrace_direct_mod")
> Reported-by: kernel test robot <lkp@intel.com>
> Closes:
> https://lore.kernel.org/oe-kbuild-all/202609110704.Q3M5vCDV-lkp@intel.com/
> Signed-off-by: Leon Hwang <leon.hwang@linux.dev>
> ---
> kernel/trace/ftrace.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
> index 53d5db60bfa5..673a54fdf392 100644
> --- a/kernel/trace/ftrace.c
> +++ b/kernel/trace/ftrace.c
> @@ -6675,7 +6675,7 @@ int update_ftrace_direct_mod(struct ftrace_ops
> *ops, struct ftrace_hash *hash, b
>
> /* Enable the tmp_ops to have the same functions as the hash
> object. */
> ftrace_ops_init(&tmp_ops);
> - tmp_ops.func_hash->filter_hash = hash;
> + rcu_assign_pointer(tmp_ops.func_hash->filter_hash, hash);
>
> err = register_ftrace_function_nolock(&tmp_ops);
> if (err)
> --
> 2.55.0
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-09-11 13:27 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-10 23:59 kernel/trace/ftrace.c:6651:40: sparse: sparse: incorrect type in assignment (different address spaces) kernel test robot
2026-09-11 3:14 ` Leon Hwang
2026-09-11 13:28 ` Steven Rostedt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®