configfs: configfs_create_dir() has parent dentry in dentry->d_parent
authorAl Viro <viro@zeniv.linux.org.uk>
Sat, 17 Mar 2012 20:49:20 +0000 (16:49 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Wed, 21 Mar 2012 01:29:47 +0000 (21:29 -0400)
no need to play sick games with parent item, internal mount, etc.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/configfs/dir.c

index 54c59a7e37ce1ee755e6e4201a53bb4c684b3e83..6c560e77965c10873d331e6b3c35bf62408fbbd0 100644 (file)
@@ -264,11 +264,13 @@ static int init_symlink(struct inode * inode)
        return 0;
 }
 
-static int create_dir(struct config_item * k, struct dentry * p,
-                     struct dentry * d)
+static int create_dir(struct config_item *k, struct dentry *d)
 {
        int error;
        umode_t mode = S_IFDIR| S_IRWXU | S_IRUGO | S_IXUGO;
+       struct dentry *p = d->d_parent;
+
+       BUG_ON(!k);
 
        error = configfs_dirent_exists(p->d_fsdata, d->d_name.name);
        if (!error)
@@ -304,19 +306,7 @@ static int create_dir(struct config_item * k, struct dentry * p,
 
 static int configfs_create_dir(struct config_item * item, struct dentry *dentry)
 {
-       struct dentry * parent;
-       int error = 0;
-
-       BUG_ON(!item);
-
-       if (item->ci_parent)
-               parent = item->ci_parent->ci_dentry;
-       else if (configfs_mount)
-               parent = configfs_mount->mnt_root;
-       else
-               return -EFAULT;
-
-       error = create_dir(item,parent,dentry);
+       int error = create_dir(item, dentry);
        if (!error)
                item->ci_dentry = dentry;
        return error;