From 19b5ef615787062a87c4ea15fcdb0e256b62ed19 Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Wed, 3 Apr 2013 21:58:52 -0400 Subject: ext4: add mutex_is_locked() assertion to ext4_truncate() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ 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" --- fs/ext4/inode.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'fs/ext4') diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 49c80e4ac5a..56ebd662033 100644 --- a/fs/ext4/inode.c +++ b/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)) -- cgit v1.2.3-18-g5258