]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/kernfs/symlink.c
kernfs: remove KERNFS_REMOVED
[karo-tx-linux.git] / fs / kernfs / symlink.c
index a03e26036ef93c59f0880012481905fb184d32f5..b2c106ca343435a508038659ce7a3aac09ddc1b8 100644 (file)
@@ -40,9 +40,13 @@ struct kernfs_node *kernfs_create_link(struct kernfs_node *parent,
        kn->symlink.target_kn = target;
        kernfs_get(target);     /* ref owned by symlink */
 
-       kernfs_addrm_start(&acxt);
-       error = kernfs_add_one(&acxt, kn, parent);
-       kernfs_addrm_finish(&acxt);
+       error = -ENOENT;
+       if (kernfs_get_active(parent)) {
+               kernfs_addrm_start(&acxt);
+               error = kernfs_add_one(&acxt, kn, parent);
+               kernfs_addrm_finish(&acxt);
+               kernfs_put_active(parent);
+       }
 
        if (!error)
                return kn;