[PATCH] sysfs: fix problem with duplicate sysfs directories and files
[linux-2.6.git] / fs / sysfs / file.c
index e21f402..5e83e72 100644 (file)
@@ -361,10 +361,12 @@ int sysfs_add_file(struct dentry * dir, const struct attribute * attr, int type)
 {
        struct sysfs_dirent * parent_sd = dir->d_fsdata;
        umode_t mode = (attr->mode & S_IALLUGO) | S_IFREG;
-       int error = 0;
+       int error = -EEXIST;
 
        mutex_lock(&dir->d_inode->i_mutex);
-       error = sysfs_make_dirent(parent_sd, NULL, (void *) attr, mode, type);
+       if (!sysfs_dirent_exist(parent_sd, attr->name))
+               error = sysfs_make_dirent(parent_sd, NULL, (void *)attr,
+                                         mode, type);
        mutex_unlock(&dir->d_inode->i_mutex);
 
        return error;