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

Commit cfa57c11 authored by Al Viro's avatar Al Viro
Browse files

debugfs: fold debugfs_create_by_name() into the only caller



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent c3b1a350
Loading
Loading
Loading
Loading
+20 −33
Original line number Diff line number Diff line
@@ -293,13 +293,19 @@ static struct file_system_type debug_fs_type = {
	.kill_sb =	kill_litter_super,
};

static int debugfs_create_by_name(const char *name, umode_t mode,
				  struct dentry *parent,
				  struct dentry **dentry,
				  void *data,
struct dentry *__create_file(const char *name, umode_t mode,
				   struct dentry *parent, void *data,
				   const struct file_operations *fops)
{
	int error = 0;
	struct dentry *dentry = NULL;
	int error;

	pr_debug("debugfs: creating file '%s'\n",name);

	error = simple_pin_fs(&debug_fs_type, &debugfs_mount,
			      &debugfs_mount_count);
	if (error)
		goto exit;

	/* If the parent is not specified, we create it in the root.
	 * We need the root dentry to do this, which is in the super 
@@ -309,48 +315,29 @@ static int debugfs_create_by_name(const char *name, umode_t mode,
	if (!parent)
		parent = debugfs_mount->mnt_root;

	*dentry = NULL;
	dentry = NULL;
	mutex_lock(&parent->d_inode->i_mutex);
	*dentry = lookup_one_len(name, parent, strlen(name));
	if (!IS_ERR(*dentry)) {
	dentry = lookup_one_len(name, parent, strlen(name));
	if (!IS_ERR(dentry)) {
		switch (mode & S_IFMT) {
		case S_IFDIR:
			error = debugfs_mkdir(parent->d_inode, *dentry, mode,
			error = debugfs_mkdir(parent->d_inode, dentry, mode,
					      data, fops);
			break;
		case S_IFLNK:
			error = debugfs_link(parent->d_inode, *dentry, mode,
			error = debugfs_link(parent->d_inode, dentry, mode,
					     data, fops);
			break;
		default:
			error = debugfs_create(parent->d_inode, *dentry, mode,
			error = debugfs_create(parent->d_inode, dentry, mode,
					       data, fops);
			break;
		}
		dput(*dentry);
		dput(dentry);
	} else
		error = PTR_ERR(*dentry);
		error = PTR_ERR(dentry);
	mutex_unlock(&parent->d_inode->i_mutex);

	return error;
}

struct dentry *__create_file(const char *name, umode_t mode,
				   struct dentry *parent, void *data,
				   const struct file_operations *fops)
{
	struct dentry *dentry = NULL;
	int error;

	pr_debug("debugfs: creating file '%s'\n",name);

	error = simple_pin_fs(&debug_fs_type, &debugfs_mount,
			      &debugfs_mount_count);
	if (error)
		goto exit;

	error = debugfs_create_by_name(name, mode, parent, &dentry,
				       data, fops);
	if (error) {
		dentry = NULL;
		simple_release_fs(&debugfs_mount, &debugfs_mount_count);