Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0dd6c08a authored by Al Viro's avatar Al Viro
Browse files

configfs: configfs_create_dir() has parent dentry in dentry->d_parent



no need to play sick games with parent item, internal mount, etc.

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 16d13b59
Loading
Loading
Loading
Loading
+5 −15
Original line number Diff line number Diff line
@@ -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;