diff options
| author | Jeff Layton <jlayton@kernel.org> | 2025-06-26 08:52:14 -0400 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2025-06-27 13:20:29 -0700 |
| commit | f4e6aefb9c6d8f9a5baa2a26bddaff4fbb4d280e (patch) | |
| tree | 3c878f3843ee1219b769706f8bcef51bed035b0c | |
| parent | 707bd05be75f65749c3f1695f4e362a89b3fcc7b (diff) | |
ref_tracker: do xarray and workqueue job initializations earlier
The kernel test robot reported an oops that occurred when attempting to
deregister a dentry from the xarray during subsys_initcall().
The ref_tracker xarrays and workqueue job are being initialized in
late_initcall() which is too late. Move those to postcore_initcall()
instead.
Fixes: 65b584f53611 ("ref_tracker: automatically register a file in debugfs for a ref_tracker_dir")
Reported-by: kernel test robot <oliver.sang@intel.com>
Closes: https://lore.kernel.org/oe-lkp/202506251406.c28f2adb-lkp@intel.com
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Link: https://patch.msgid.link/20250626-reftrack-dbgfs-v1-1-812102e2a394@kernel.org
| -rw-r--r-- | lib/ref_tracker.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c index dcf923a1edf5..a9e6ffcff04b 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -516,13 +516,19 @@ static void debugfs_reap_work(struct work_struct *work) } while (reaped); } -static int __init ref_tracker_debugfs_init(void) +static int __init ref_tracker_debugfs_postcore_init(void) { INIT_WORK(&debugfs_reap_worker, debugfs_reap_work); xa_init_flags(&debugfs_dentries, XA_FLAGS_LOCK_IRQ); xa_init_flags(&debugfs_symlinks, XA_FLAGS_LOCK_IRQ); + return 0; +} +postcore_initcall(ref_tracker_debugfs_postcore_init); + +static int __init ref_tracker_debugfs_late_init(void) +{ ref_tracker_debug_dir = debugfs_create_dir("ref_tracker", NULL); return 0; } -late_initcall(ref_tracker_debugfs_init); +late_initcall(ref_tracker_debugfs_late_init); #endif /* CONFIG_DEBUG_FS */ |