diff options
Diffstat (limited to 'fs/ext2/namei.c')
-rw-r--r-- | fs/ext2/namei.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/ext2/namei.c b/fs/ext2/namei.c index 90ea17998a73..6524ecaebb7a 100644 --- a/fs/ext2/namei.c +++ b/fs/ext2/namei.c | |||
@@ -320,7 +320,7 @@ static int ext2_rename (struct inode * old_dir, struct dentry * old_dentry, | |||
320 | if (!new_de) | 320 | if (!new_de) |
321 | goto out_dir; | 321 | goto out_dir; |
322 | inode_inc_link_count(old_inode); | 322 | inode_inc_link_count(old_inode); |
323 | ext2_set_link(new_dir, new_de, new_page, old_inode); | 323 | ext2_set_link(new_dir, new_de, new_page, old_inode, 1); |
324 | new_inode->i_ctime = CURRENT_TIME_SEC; | 324 | new_inode->i_ctime = CURRENT_TIME_SEC; |
325 | if (dir_de) | 325 | if (dir_de) |
326 | drop_nlink(new_inode); | 326 | drop_nlink(new_inode); |
@@ -352,7 +352,8 @@ static int ext2_rename (struct inode * old_dir, struct dentry * old_dentry, | |||
352 | inode_dec_link_count(old_inode); | 352 | inode_dec_link_count(old_inode); |
353 | 353 | ||
354 | if (dir_de) { | 354 | if (dir_de) { |
355 | ext2_set_link(old_inode, dir_de, dir_page, new_dir); | 355 | if (old_dir != new_dir) |
356 | ext2_set_link(old_inode, dir_de, dir_page, new_dir, 0); | ||
356 | inode_dec_link_count(old_dir); | 357 | inode_dec_link_count(old_dir); |
357 | } | 358 | } |
358 | return 0; | 359 | return 0; |