Commit 6f88049caf56022c773272e03ddfa8cf79867059

Authored by Al Viro
1 parent 37750cdda3

minix: i_nlink races in rename()

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

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

... ... @@ -213,7 +213,6 @@
213 213 new_de = minix_find_entry(new_dentry, &new_page);
214 214 if (!new_de)
215 215 goto out_dir;
216   - inode_inc_link_count(old_inode);
217 216 minix_set_link(new_de, new_page, old_inode);
218 217 new_inode->i_ctime = CURRENT_TIME_SEC;
219 218 if (dir_de)
220 219  
221 220  
222 221  
... ... @@ -225,18 +224,15 @@
225 224 if (new_dir->i_nlink >= info->s_link_max)
226 225 goto out_dir;
227 226 }
228   - inode_inc_link_count(old_inode);
229 227 err = minix_add_link(new_dentry, old_inode);
230   - if (err) {
231   - inode_dec_link_count(old_inode);
  228 + if (err)
232 229 goto out_dir;
233   - }
234 230 if (dir_de)
235 231 inode_inc_link_count(new_dir);
236 232 }
237 233  
238 234 minix_delete_entry(old_de, old_page);
239   - inode_dec_link_count(old_inode);
  235 + mark_inode_dirty(old_inode);
240 236  
241 237 if (dir_de) {
242 238 minix_set_link(dir_de, dir_page, new_dir);