From 1088a574aa56ac0e7b79b4e8f9975e9f969d7132 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Fri, 1 Oct 2010 05:43:54 +0200 Subject: [PATCH] --- yaml --- r: 211577 b: refs/heads/master c: f17c89bfcc9cccd405098eac3ec1ebfddf03279e h: refs/heads/master i: 211575: 41706bd907e103a5ff44d2632e1fce27c1c63ef8 v: v3 --- [refs] | 2 +- trunk/fs/hfsplus/dir.c | 26 ++++++++++++-------------- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/[refs] b/[refs] index 884335e40962..f4dab6c6d290 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 30d3abbec730a5a9c954a6342271f7a7db155b08 +refs/heads/master: f17c89bfcc9cccd405098eac3ec1ebfddf03279e diff --git a/trunk/fs/hfsplus/dir.c b/trunk/fs/hfsplus/dir.c index 7efcf75ea73a..f8ae468f4ab6 100644 --- a/trunk/fs/hfsplus/dir.c +++ b/trunk/fs/hfsplus/dir.c @@ -364,31 +364,29 @@ static int hfsplus_rmdir(struct inode *dir, struct dentry *dentry) static int hfsplus_symlink(struct inode *dir, struct dentry *dentry, const char *symname) { - struct super_block *sb; struct inode *inode; int res; - sb = dir->i_sb; - inode = hfsplus_new_inode(sb, S_IFLNK | S_IRWXUGO); + inode = hfsplus_new_inode(dir->i_sb, S_IFLNK | S_IRWXUGO); if (!inode) return -ENOSPC; res = page_symlink(inode, symname, strlen(symname) + 1); - if (res) { - inode->i_nlink = 0; - hfsplus_delete_inode(inode); - iput(inode); - return res; - } + if (res) + goto out_err; - mark_inode_dirty(inode); res = hfsplus_create_cat(inode->i_ino, dir, &dentry->d_name, inode); + if (res) + goto out_err; - if (!res) { - hfsplus_instantiate(dentry, inode, inode->i_ino); - mark_inode_dirty(inode); - } + hfsplus_instantiate(dentry, inode, inode->i_ino); + mark_inode_dirty(inode); + return 0; +out_err: + inode->i_nlink = 0; + hfsplus_delete_inode(inode); + iput(inode); return res; }