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

Commit 967e35dc authored by Tejun Heo's avatar Tejun Heo Committed by Greg Kroah-Hartman
Browse files

sysfs: cosmetic clean up on node creation failure paths



Node addition failure is detected by testing return value of
sysfs_addfm_finish() which returns the number of added and removed
nodes.  As the function is called as the last step of addition right
on top of error handling block, the if blocks looked like the
following.

	if (sysfs_addrm_finish(&acxt))
		success handling, usually return;
	/* fall through to error handling */

This is the opposite of usual convention in sysfs and makes the code
difficult to understand.  This patch inverts the test and makes those
blocks look more like others.

Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
Cc: Gabriel C <nix.or.die@googlemail.com>
Cc: Miles Lane <miles.lane@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent a1da4dfe
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -699,19 +699,21 @@ static int create_dir(struct kobject *kobj, struct sysfs_dirent *parent_sd,

	/* link in */
	sysfs_addrm_start(&acxt, parent_sd);

	if (!sysfs_find_dirent(parent_sd, name)) {
		sysfs_add_one(&acxt, sd);
		sysfs_link_sibling(sd);
	}
	if (sysfs_addrm_finish(&acxt)) {
		*p_sd = sd;
		return 0;
	}

	if (!sysfs_addrm_finish(&acxt)) {
		sysfs_put(sd);
		return -EEXIST;
	}

	*p_sd = sd;
	return 0;
}

int sysfs_create_subdir(struct kobject *kobj, const char *name,
			struct sysfs_dirent **p_sd)
{
+5 −4
Original line number Diff line number Diff line
@@ -410,13 +410,14 @@ int sysfs_add_file(struct sysfs_dirent *dir_sd, const struct attribute *attr,
		sysfs_link_sibling(sd);
	}

	if (sysfs_addrm_finish(&acxt))
		return 0;

	if (!sysfs_addrm_finish(&acxt)) {
		sysfs_put(sd);
		return -EEXIST;
	}

	return 0;
}


/**
 *	sysfs_create_file - create an attribute file for an object.
+6 −4
Original line number Diff line number Diff line
@@ -97,11 +97,13 @@ int sysfs_create_link(struct kobject * kobj, struct kobject * target, const char
		sysfs_link_sibling(sd);
	}

	if (sysfs_addrm_finish(&acxt))
	if (!sysfs_addrm_finish(&acxt)) {
		error = -EEXIST;
		goto out_put;
	}

	return 0;

	error = -EEXIST;
	/* fall through */
 out_put:
	sysfs_put(target_sd);
	sysfs_put(sd);