diff options
-rw-r--r-- | fs/affs/amigaffs.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/affs/amigaffs.c b/fs/affs/amigaffs.c index 805573005de6..7d0f0a30f7a3 100644 --- a/fs/affs/amigaffs.c +++ b/fs/affs/amigaffs.c | |||
@@ -179,14 +179,18 @@ affs_remove_link(struct dentry *dentry) | |||
179 | affs_lock_dir(dir); | 179 | affs_lock_dir(dir); |
180 | affs_fix_dcache(dentry, link_ino); | 180 | affs_fix_dcache(dentry, link_ino); |
181 | retval = affs_remove_hash(dir, link_bh); | 181 | retval = affs_remove_hash(dir, link_bh); |
182 | if (retval) | 182 | if (retval) { |
183 | affs_unlock_dir(dir); | ||
183 | goto done; | 184 | goto done; |
185 | } | ||
184 | mark_buffer_dirty_inode(link_bh, inode); | 186 | mark_buffer_dirty_inode(link_bh, inode); |
185 | 187 | ||
186 | memcpy(AFFS_TAIL(sb, bh)->name, AFFS_TAIL(sb, link_bh)->name, 32); | 188 | memcpy(AFFS_TAIL(sb, bh)->name, AFFS_TAIL(sb, link_bh)->name, 32); |
187 | retval = affs_insert_hash(dir, bh); | 189 | retval = affs_insert_hash(dir, bh); |
188 | if (retval) | 190 | if (retval) { |
191 | affs_unlock_dir(dir); | ||
189 | goto done; | 192 | goto done; |
193 | } | ||
190 | mark_buffer_dirty_inode(bh, inode); | 194 | mark_buffer_dirty_inode(bh, inode); |
191 | 195 | ||
192 | affs_unlock_dir(dir); | 196 | affs_unlock_dir(dir); |