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

Commit 47a52e91 authored by Tejun Heo's avatar Tejun Heo Committed by Greg Kroah-Hartman
Browse files

kernfs: update kernfs_rename_ns() to consider KERNFS_STATIC_NAME



kernfs_rename_ns() currently assumes that the target sysfs_dirent has
a copied name.  This has been okay because sysfs supports rename only
for directories which always have copied names; however, there's
nothing in kernfs interface which calls for such restriction and
currently invoking kernfs_rename_ns() on a regular file leads to oops
because it ends up trying to kfree() a static name.

This patch updates kernfs_rename_ns() so that it skips kfree() of the
old name if it's static.  This allows it to be used for all node
types.

Signed-off-by: default avatarTejun Heo <tj@kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 2063d608
Loading
Loading
Loading
Loading
+5 −1
Original line number Original line Diff line number Diff line
@@ -886,7 +886,11 @@ int kernfs_rename_ns(struct kernfs_node *kn, struct kernfs_node *new_parent,
		if (!new_name)
		if (!new_name)
			goto out;
			goto out;


		if (kn->flags & KERNFS_STATIC_NAME)
			kn->flags &= ~KERNFS_STATIC_NAME;
		else
			kfree(kn->name);
			kfree(kn->name);

		kn->name = new_name;
		kn->name = new_name;
	}
	}