From 02d0a476404125ec8cc2d574c20cb50550c0137b Mon Sep 17 00:00:00 2001
From: Helge Deller <deller@gmx.de>
Date: Thu, 14 Jul 2022 18:59:50 +0200
Subject: [PATCH] dentry more info at crash.

crash happens with webkit2gtk on phantom, see mail:
	WARNING: CPU: 1 PID: 14735 at fs/dcache.c:365 dentry_free+0x100/0x128
	from 9.7.2022 on LKML

diff --git a/fs/dcache.c b/fs/dcache.c
index 93f4f5ee07bf..a3c8dba97e85 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -362,9 +362,25 @@ static inline void __d_clear_type_and_inode(struct dentry *dentry)
 
 static void dentry_free(struct dentry *dentry)
 {
-	WARN_ON(!hlist_unhashed(&dentry->d_u.d_alias));
+	int unhashed = hlist_unhashed(&dentry->d_u.d_alias);
+	if (WARN_ON(!unhashed)) {
+		pr_err("dentry = %px\n", dentry);
+		pr_err("spin_is_locked(&dentry->d_lock) = %d\n", spin_is_locked(&dentry->d_lock));
+		pr_err("dname_external(dentry) = %d\n", dname_external(dentry));
+		pr_err("dentry->d_flags & DCACHE_NORCU = %d\n", dentry->d_flags & DCACHE_NORCU);
+		// pr_err("ERROR on file %pd\n", &dentry); HANGS
+		pr_err("dentry->d_name.len = %d\n", dentry->d_name.len);
+		pr_err("dentry->d_name.hash = %x\n", dentry->d_name.hash);
+		pr_err("dentry->d_lockref.count = %d\n", dentry->d_lockref.count);
+		pr_err("dentry->d_flags = %d\n", dentry->d_flags);
+		pr_err("dentry->d_inode = %px\n", dentry->d_inode);
+		pr_err("dentry->d_parent = %px\n", dentry->d_parent);
+		pr_err("dentry->d_u.d_rcu = %pS\n", dentry->d_u.d_rcu.func);
+	}
 	if (unlikely(dname_external(dentry))) {
 		struct external_name *p = external_name(dentry);
+		if (!unhashed)
+			pr_err("value of &p->u.count = %d\n", p->u.count.counter);
 		if (likely(atomic_dec_and_test(&p->u.count))) {
 			call_rcu(&dentry->d_u.d_rcu, __d_free_external);
 			return;
