fix hostfs_open() use of ->f_path.dentry
authorAl Viro <viro@zeniv.linux.org.uk>
Wed, 9 Dec 2020 23:38:24 +0000 (18:38 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Tue, 22 Dec 2020 02:42:29 +0000 (21:42 -0500)
this is one of the cases where we need to use d_real() - we are
using more than the name of dentry here.  ->d_sb is used as well,
so in case of hostfs being used as a layer we get the wrong
superblock.

Reported-by: Johannes Berg <johannes@sipsolutions.net>
Tested-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/hostfs/hostfs_kern.c

index c070c0d..aea3545 100644 (file)
@@ -315,7 +315,7 @@ retry:
        if (mode & FMODE_WRITE)
                r = w = 1;
 
-       name = dentry_name(file->f_path.dentry);
+       name = dentry_name(d_real(file->f_path.dentry, file->f_inode));
        if (name == NULL)
                return -ENOMEM;