summaryrefslogtreecommitdiffstats
path: root/fs/configfs/dir.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-03-14 15:29:08 -0700
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-03-14 15:29:08 -0700
commit4e337adae4e960f64043b9f433c4a825c902616c (patch)
tree407ea9edaec1ec666e5a0a6368dc51be2bc913c9 /fs/configfs/dir.c
parent0bdd0f385a44344f83409b9e00797bfe2596faf8 (diff)
parentb36c3f84988eebf38acaccc756e05f6b70e333ab (diff)
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/mfasheh/ocfs2
* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/mfasheh/ocfs2: ocfs2_dlm: Add missing locks in dlm_empty_lockres ocfs2_dlm: Missing get/put lockres in dlm_run_purge_lockres configfs: add missing mutex_unlock() ocfs2: add some missing address space callbacks ocfs2: Concurrent access of o2hb_region->hr_task was not locked ocfs2: Proper cleanup in case of error in ocfs2_register_hb_callbacks()
Diffstat (limited to 'fs/configfs/dir.c')
-rw-r--r--fs/configfs/dir.c27
1 files changed, 12 insertions, 15 deletions
diff --git a/fs/configfs/dir.c b/fs/configfs/dir.c
index 34750d5e4ff..5e6e37e58f3 100644
--- a/fs/configfs/dir.c
+++ b/fs/configfs/dir.c
@@ -1141,25 +1141,22 @@ int configfs_register_subsystem(struct configfs_subsystem *subsys)
err = -ENOMEM;
dentry = d_alloc(configfs_sb->s_root, &name);
- if (!dentry)
- goto out_release;
-
- d_add(dentry, NULL);
+ if (dentry) {
+ d_add(dentry, NULL);
- err = configfs_attach_group(sd->s_element, &group->cg_item,
- dentry);
- if (!err)
- dentry = NULL;
- else
- d_delete(dentry);
+ err = configfs_attach_group(sd->s_element, &group->cg_item,
+ dentry);
+ if (err) {
+ d_delete(dentry);
+ dput(dentry);
+ }
+ }
mutex_unlock(&configfs_sb->s_root->d_inode->i_mutex);
- if (dentry) {
- dput(dentry);
-out_release:
- unlink_group(group);
- configfs_release_fs();
+ if (err) {
+ unlink_group(group);
+ configfs_release_fs();
}
return err;