]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit - fs/ext4/page-io.c
ext4: fix unwritten counter leakage
authorDmitry Monakhov <dmonakhov@openvz.org>
Sat, 29 Sep 2012 03:36:25 +0000 (23:36 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sat, 29 Sep 2012 03:36:25 +0000 (23:36 -0400)
commit82e54229118785badffb4ef5ba4803df25fe007f
tree270d0afb27dce342b7508cd05bb0db45cdad089d
parente27f41e1b789e60e7d8cc9c81fd93ca49ef31f13
ext4: fix unwritten counter leakage

ext4_set_io_unwritten_flag() will increment i_unwritten counter, so
once we mark end_io with EXT4_END_IO_UNWRITTEN we have to revert it back
on error path.

 - add missed error checks to prevent counter leakage
 - ext4_end_io_nolock() will clear EXT4_END_IO_UNWRITTEN flag to signal
   that conversion finished.
 - add BUG_ON to ext4_free_end_io() to prevent similar leakage in future.

Visible effect of this bug is that unaligned aio_stress may deadlock

Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
fs/ext4/extents.c
fs/ext4/page-io.c