mirror of https://gitee.com/openkylin/linux.git
jffs2: fix IN_DELETE_SELF on overwriting rename() killing a directory
We don't generate IN_DELETE_SELF on victim of overwriting rename() if it happens to be a directory. Trivially fixed by doing to ->i_nlink what we do ->pino_nlink a couple of lines later in jffs2_rename(). Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
841590ce16
commit
22ba747f66
|
@ -820,7 +820,10 @@ static int jffs2_rename (struct inode *old_dir_i, struct dentry *old_dentry,
|
||||||
|
|
||||||
if (victim_f) {
|
if (victim_f) {
|
||||||
/* There was a victim. Kill it off nicely */
|
/* There was a victim. Kill it off nicely */
|
||||||
drop_nlink(new_dentry->d_inode);
|
if (S_ISDIR(new_dentry->d_inode->i_mode))
|
||||||
|
clear_nlink(new_dentry->d_inode);
|
||||||
|
else
|
||||||
|
drop_nlink(new_dentry->d_inode);
|
||||||
/* Don't oops if the victim was a dirent pointing to an
|
/* Don't oops if the victim was a dirent pointing to an
|
||||||
inode which didn't exist. */
|
inode which didn't exist. */
|
||||||
if (victim_f->inocache) {
|
if (victim_f->inocache) {
|
||||||
|
|
Loading…
Reference in New Issue