Patchwork [3.5.y.z,extended,stable] Patch "vfs: d_obtain_alias() needs to use "/" as default" has been added to staging queue

mail settings
Submitter Herton Ronaldo Krzesinski
Date Jan. 8, 2013, 8:57 p.m.
Message ID <>
Download mbox | patch
Permalink /patch/210521/
State New
Headers show


Herton Ronaldo Krzesinski - Jan. 8, 2013, 8:57 p.m.
This is a note to let you know that I have just added a patch titled

    vfs: d_obtain_alias() needs to use "/" as default

to the linux-3.5.y-queue branch of the 3.5.y.z extended stable tree 
which can be found at:;a=shortlog;h=refs/heads/linux-3.5.y-queue

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.5.y.z tree, see



From 0cc92e888494c489a4f6b91b072718a1f3626216 Mon Sep 17 00:00:00 2001
From: NeilBrown <>
Date: Thu, 8 Nov 2012 16:09:37 -0800
Subject: [PATCH 22/27] vfs: d_obtain_alias() needs to use "/" as default

commit b911a6bdeef5848c468597d040e3407e0aee04ce upstream.

NFS appears to use d_obtain_alias() to create the root dentry rather than
d_make_root.  This can cause 'prepend_path()' to complain that the root
has a weird name if an NFS filesystem is lazily unmounted.  e.g.  if
"/mnt" is an NFS mount then

 { cd /mnt; umount -l /mnt ; ls -l /proc/self/cwd; }

will cause a WARN message like
   WARNING: at /home/git/linux/fs/dcache.c:2624 prepend_path+0x1d7/0x1e0()
   Root dentry has weird name <>

to appear in kernel logs.

So change d_obtain_alias() to use "/" rather than "" as the anonymous

Signed-off-by: NeilBrown <>
Cc: Trond Myklebust <>
Cc: Al Viro <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Al Viro <>
Signed-off-by: Herton Ronaldo Krzesinski <>
 fs/dcache.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)



diff --git a/fs/dcache.c b/fs/dcache.c
index 9560257..1845c46 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -1580,7 +1580,7 @@  EXPORT_SYMBOL(d_find_any_alias);
 struct dentry *d_obtain_alias(struct inode *inode)
-	static const struct qstr anonstring = { .name = "" };
+	static const struct qstr anonstring = QSTR_INIT("/", 1);
 	struct dentry *tmp;
 	struct dentry *res;