From: kernel test robot <lkp@intel.com>
To: Leon Hwang <leon.hwang@linux.dev>
Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org,
Steven Rostedt <rostedt@goodmis.org>
Subject: kernel/trace/ftrace.c:6651:40: sparse: sparse: incorrect type in assignment (different address spaces)
Date: Fri, 11 Sep 2026 07:59:39 +0800 [thread overview]
Message-ID: <202609110704.Q3M5vCDV-lkp@intel.com> (raw)
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
next reply other threads:[~2026-09-11 0:00 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-10 23:59 kernel test robot [this message]
2026-09-11 3:14 ` Leon Hwang
2026-09-11 13:28 ` Steven Rostedt
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=202609110704.Q3M5vCDV-lkp@intel.com \
--to=lkp@intel.com \
--cc=leon.hwang@linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=rostedt@goodmis.org \
/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 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®