diff options
author | Jan Kara <jack@suse.cz> | 2016-02-29 08:36:38 +1100 |
---|---|---|
committer | Dave Chinner <david@fromorbit.com> | 2016-02-29 08:36:38 +1100 |
commit | 74c66bcb7eda551f3b8588659c58fe29184af903 (patch) | |
tree | 0d1f5bc2cb487890f23caf622138135c54dfd4a5 /fs/ext4/page-io.c | |
parent | c19b104a67b3bb1ac48275a8a1c9df666e676c25 (diff) | |
download | op-kernel-dev-74c66bcb7eda551f3b8588659c58fe29184af903.zip op-kernel-dev-74c66bcb7eda551f3b8588659c58fe29184af903.tar.gz |
ext4: Fix data exposure after failed AIO DIO
When AIO DIO fails e.g. due to IO error, we must not convert unwritten
extents as that will expose uninitialized data. Handle this case
by clearing unwritten flag from io_end in case of error and thus
preventing extent conversion.
Signed-off-by: Jan Kara <jack@suse.cz>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
Diffstat (limited to 'fs/ext4/page-io.c')
-rw-r--r-- | fs/ext4/page-io.c | 10 |
1 files changed, 0 insertions, 10 deletions
diff --git a/fs/ext4/page-io.c b/fs/ext4/page-io.c index 090b349..f49a87c 100644 --- a/fs/ext4/page-io.c +++ b/fs/ext4/page-io.c @@ -139,16 +139,6 @@ static void ext4_release_io_end(ext4_io_end_t *io_end) kmem_cache_free(io_end_cachep, io_end); } -static void ext4_clear_io_unwritten_flag(ext4_io_end_t *io_end) -{ - struct inode *inode = io_end->inode; - - io_end->flag &= ~EXT4_IO_END_UNWRITTEN; - /* Wake up anyone waiting on unwritten extent conversion */ - if (atomic_dec_and_test(&EXT4_I(inode)->i_unwritten)) - wake_up_all(ext4_ioend_wq(inode)); -} - /* * Check a range of space and convert unwritten extents to written. Note that * we are protected from truncate touching same part of extent tree by the |