patch-2_6_7-vs1_9_1_12
[linux-2.6.git] / fs / sysfs / inode.c
index 6309cd8..ac5c0b9 100644 (file)
@@ -96,7 +96,12 @@ void sysfs_hash_and_remove(struct dentry * dir, const char * name)
                        pr_debug("sysfs: Removing %s (%d)\n", victim->d_name.name,
                                 atomic_read(&victim->d_count));
 
-                       d_delete(victim);
+                       d_drop(victim);
+                       /* release the target kobject in case of 
+                        * a symlink
+                        */
+                       if (S_ISLNK(victim->d_inode->i_mode))
+                               kobject_put(victim->d_fsdata);
                        simple_unlink(dir->d_inode,victim);
                }
                /*