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 <a-fujita@rs.jp.nec.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
parent
ee90d57e20
commit
09e0834fb0
@ -959,7 +959,11 @@ static int ext4_ordered_write_end(struct file *file,
|
|||||||
ext4_orphan_add(handle, inode);
|
ext4_orphan_add(handle, inode);
|
||||||
if (ret2 < 0)
|
if (ret2 < 0)
|
||||||
ret = ret2;
|
ret = ret2;
|
||||||
|
} else {
|
||||||
|
unlock_page(page);
|
||||||
|
page_cache_release(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret2 = ext4_journal_stop(handle);
|
ret2 = ext4_journal_stop(handle);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
ret = ret2;
|
ret = ret2;
|
||||||
|
Loading…
Reference in New Issue
Block a user