浏览代码

ext4: add mutex_is_locked() assertion to ext4_truncate()

[ Added fixup from Lukáš Czerner which only checks the assertion when
  the inode is not new and is not being freed. ]

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Theodore Ts'o 12 年之前
父节点
当前提交
19b5ef6157
共有 1 个文件被更改,包括 7 次插入0 次删除
  1. 7 0
      fs/ext4/inode.c

+ 7 - 0
fs/ext4/inode.c

@@ -3788,6 +3788,13 @@ void ext4_truncate(struct inode *inode)
 	struct address_space *mapping = inode->i_mapping;
 	loff_t page_len;
 
+	/*
+	 * There is a possibility that we're either freeing the inode
+	 * or it completely new indode. In those cases we might not
+	 * have i_mutex locked because it's not necessary.
+	 */
+	if (!(inode->i_state & (I_NEW|I_FREEING)))
+		WARN_ON(!mutex_is_locked(&inode->i_mutex));
 	trace_ext4_truncate_enter(inode);
 
 	if (!ext4_can_truncate(inode))