]> Git Repo - linux.git/blobdiff - fs/kernfs/symlink.c
Merge tag 'mac80211-next-for-davem-2018-07-24' of git://git.kernel.org/pub/scm/linux...
[linux.git] / fs / kernfs / symlink.c
index 08ccabd7047f390151b8ab31f72baa21efeefb6f..5ffed48f3d0e7cebb0f58cd7b9923ae75c8e7c92 100644 (file)
@@ -21,6 +21,7 @@
  * @target: target node for the symlink to point to
  *
  * Returns the created node on success, ERR_PTR() value on error.
+ * Ownership of the link matches ownership of the target.
  */
 struct kernfs_node *kernfs_create_link(struct kernfs_node *parent,
                                       const char *name,
@@ -28,8 +29,16 @@ struct kernfs_node *kernfs_create_link(struct kernfs_node *parent,
 {
        struct kernfs_node *kn;
        int error;
+       kuid_t uid = GLOBAL_ROOT_UID;
+       kgid_t gid = GLOBAL_ROOT_GID;
 
-       kn = kernfs_new_node(parent, name, S_IFLNK|S_IRWXUGO, KERNFS_LINK);
+       if (target->iattr) {
+               uid = target->iattr->ia_iattr.ia_uid;
+               gid = target->iattr->ia_iattr.ia_gid;
+       }
+
+       kn = kernfs_new_node(parent, name, S_IFLNK|S_IRWXUGO, uid, gid,
+                            KERNFS_LINK);
        if (!kn)
                return ERR_PTR(-ENOMEM);
 
This page took 0.03551 seconds and 4 git commands to generate.