From: Akira Fujita Date: Thu, 20 Oct 2011 22:56:10 +0000 (-0400) Subject: ext4: fix deadlock in ext4_ordered_write_end() X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=09e0834fb0ce1ea2a63885177015bd5d7d2bc22d;p=openwrt%2Fstaging%2Fblogic.git ext4: fix deadlock in ext4_ordered_write_end() If ext4_jbd2_file_inode() in ext4_ordered_write_end() fails for some reasons, this function returns to caller without unlocking the page. It leads to the deadlock, and the patch fixes this issue. Signed-off-by: Akira Fujita Signed-off-by: "Theodore Ts'o" --- diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 081bb25a9ad3..ecb572591924 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -959,7 +959,11 @@ static int ext4_ordered_write_end(struct file *file, ext4_orphan_add(handle, inode); if (ret2 < 0) ret = ret2; + } else { + unlock_page(page); + page_cache_release(page); } + ret2 = ext4_journal_stop(handle); if (!ret) ret = ret2;