diff options
author | 2025-07-30 12:28:41 +0200 | |
---|---|---|
committer | 2025-08-11 14:51:49 +0200 | |
commit | 6b65028e2b51c023a816eabffea88980fdd5564e (patch) | |
tree | 32ecfe53ad5b362dd7703a20f577f5b0bfd1be22 /tools | |
parent | fs: writeback: fix use-after-free in __mark_inode_dirty() (diff) | |
download | wireguard-linux-6b65028e2b51c023a816eabffea88980fdd5564e.tar.xz wireguard-linux-6b65028e2b51c023a816eabffea88980fdd5564e.zip |
iomap: Fix broken data integrity guarantees for O_SYNC writes
Commit d279c80e0bac ("iomap: inline iomap_dio_bio_opflags()") has broken
the logic in iomap_dio_bio_iter() in a way that when the device does
support FUA (or has no writeback cache) and the direct IO happens to
freshly allocated or unwritten extents, we will *not* issue fsync after
completing direct IO O_SYNC / O_DSYNC write because the
IOMAP_DIO_WRITE_THROUGH flag stays mistakenly set. Fix the problem by
clearing IOMAP_DIO_WRITE_THROUGH whenever we do not perform FUA write as
it was originally intended.
CC: John Garry <john.g.garry@oracle.com>
CC: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Fixes: d279c80e0bac ("iomap: inline iomap_dio_bio_opflags()")
CC: stable@vger.kernel.org
Signed-off-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/20250730102840.20470-2-jack@suse.cz
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Christian Brauner <brauner@kernel.org>
Diffstat (limited to 'tools')
0 files changed, 0 insertions, 0 deletions