From a6a7eb7628cfa7e0e8f62e185502facc43bd2ce3 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Wed, 11 Mar 2020 13:05:03 -0400 Subject: expand path_parent_directory() in its callers Signed-off-by: Al Viro --- fs/namei.c | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) (limited to 'fs/namei.c') diff --git a/fs/namei.c b/fs/namei.c index 49b2a08105c7..88e5d7920540 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -1440,18 +1440,6 @@ static void follow_mount(struct path *path) } } -static struct dentry *path_parent_directory(struct path *path) -{ - /* rare case of legitimate dget_parent()... */ - struct dentry *parent = dget_parent(path->dentry); - - if (unlikely(!path_connected(path->mnt, parent))) { - dput(parent); - parent = NULL; - } - return parent; -} - static int follow_dotdot(struct nameidata *nd) { struct dentry *parent; @@ -1462,9 +1450,13 @@ static int follow_dotdot(struct nameidata *nd) break; } if (nd->path.dentry != nd->path.mnt->mnt_root) { - parent = path_parent_directory(&nd->path); - if (!parent) + /* rare case of legitimate dget_parent()... */ + parent = dget_parent(nd->path.dentry); + + if (unlikely(!path_connected(nd->path.mnt, parent))) { + dput(parent); return -ENOENT; + } dput(nd->path.dentry); nd->path.dentry = parent; break; @@ -2602,13 +2594,14 @@ int path_pts(struct path *path) /* Find something mounted on "pts" in the same directory as * the input path. */ - struct dentry *child, *parent; + struct dentry *parent = dget_parent(path->dentry); + struct dentry *child; struct qstr this; - parent = path_parent_directory(path); - if (!parent) + if (unlikely(!path_connected(path->mnt, parent))) { + dput(parent); return -ENOENT; - + } dput(path->dentry); path->dentry = parent; this.name = "pts"; -- cgit v1.2.3-59-g8ed1b