[PATCH 1/4] ref_tracker: add a top level debugfs directory for ref_tracker

From: Jeff Layton
Date: Mon Apr 14 2025 - 10:57:53 EST


Add a new "ref_tracker" directory in debugfs. Each individual refcount
tracker can register files under there to display info about
currently-held references.

Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx>
---
lib/ref_tracker.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)

diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c
index cf5609b1ca79361763abe5a3a98484a3ee591ff2..c96994134fe1ddfcbf644cc75b36b7e94461ec48 100644
--- a/lib/ref_tracker.c
+++ b/lib/ref_tracker.c
@@ -12,6 +12,8 @@
#define REF_TRACKER_STACK_ENTRIES 16
#define STACK_BUF_SIZE 1024

+static struct dentry *ref_tracker_debug_dir;
+
struct ref_tracker {
struct list_head head; /* anchor into dir->list or dir->quarantine */
bool dead;
@@ -273,3 +275,19 @@ int ref_tracker_free(struct ref_tracker_dir *dir,
return 0;
}
EXPORT_SYMBOL_GPL(ref_tracker_free);
+
+#ifdef CONFIG_DEBUG_FS
+#include <linux/debugfs.h>
+
+static int __init ref_tracker_debug_init(void)
+{
+ ref_tracker_debug_dir = debugfs_create_dir("ref_tracker", NULL);
+ if (IS_ERR(ref_tracker_debug_dir)) {
+ pr_warn("ref_tracker: unable to create debugfs ref_tracker directory: %pe\n",
+ ref_tracker_debug_dir);
+ ref_tracker_debug_dir = NULL;
+ }
+ return 0;
+}
+late_initcall(ref_tracker_debug_init);
+#endif /* CONFIG_DEBUG_FS */

--
2.49.0