Commit bec1052e5be6a70f03f6adc650f3a6e4c2f44ddf

Authored by Al Viro
1 parent db1f05bb85

set S_DEAD on unlink() and non-directory rename() victims

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Showing 1 changed file with 6 additions and 1 deletions Side-by-side Diff

... ... @@ -2262,8 +2262,11 @@
2262 2262 error = -EBUSY;
2263 2263 else {
2264 2264 error = security_inode_unlink(dir, dentry);
2265   - if (!error)
  2265 + if (!error) {
2266 2266 error = dir->i_op->unlink(dir, dentry);
  2267 + if (!error)
  2268 + dentry->d_inode->i_flags |= S_DEAD;
  2269 + }
2267 2270 }
2268 2271 mutex_unlock(&dentry->d_inode->i_mutex);
2269 2272  
... ... @@ -2616,6 +2619,8 @@
2616 2619 else
2617 2620 error = old_dir->i_op->rename(old_dir, old_dentry, new_dir, new_dentry);
2618 2621 if (!error) {
  2622 + if (target)
  2623 + target->i_flags |= S_DEAD;
2619 2624 if (!(old_dir->i_sb->s_type->fs_flags & FS_RENAME_DOES_D_MOVE))
2620 2625 d_move(old_dentry, new_dentry);
2621 2626 }