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: Tejun Heo <tj@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
                if (!new_name)
                        goto out;
 
-               kfree(kn->name);
+               if (kn->flags & KERNFS_STATIC_NAME)
+                       kn->flags &= ~KERNFS_STATIC_NAME;
+               else
+                       kfree(kn->name);
+
                kn->name = new_name;
        }