Эх сурвалжийг харах

udf: Avoid dir link count to go negative

If we are writing back inode of unlinked directory, its link count ends
up being (u16)-1. Although the inode is deleted, udf_iget() can load the
inode when NFS uses stale file handle and get confused.

Signed-off-by: Jan Kara <jack@suse.cz>
Jan Kara 11 жил өмнө
parent
commit
8a70ee3307
1 өөрчлөгдсөн 1 нэмэгдсэн , 1 устгасан
  1. 1 1
      fs/udf/inode.c

+ 1 - 1
fs/udf/inode.c

@@ -1664,7 +1664,7 @@ static int udf_update_inode(struct inode *inode, int do_sync)
 		     FE_PERM_U_DELETE | FE_PERM_U_CHATTR));
 		     FE_PERM_U_DELETE | FE_PERM_U_CHATTR));
 	fe->permissions = cpu_to_le32(udfperms);
 	fe->permissions = cpu_to_le32(udfperms);
 
 
-	if (S_ISDIR(inode->i_mode))
+	if (S_ISDIR(inode->i_mode) && inode->i_nlink > 0)
 		fe->fileLinkCount = cpu_to_le16(inode->i_nlink - 1);
 		fe->fileLinkCount = cpu_to_le16(inode->i_nlink - 1);
 	else
 	else
 		fe->fileLinkCount = cpu_to_le16(inode->i_nlink);
 		fe->fileLinkCount = cpu_to_le16(inode->i_nlink);