[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20240517111355.233085-1-yi.zhang@huaweicloud.com>
Date: Fri, 17 May 2024 19:13:52 +0800
From: Zhang Yi <yi.zhang@...weicloud.com>
To: linux-xfs@...r.kernel.org,
linux-fsdevel@...r.kernel.org
Cc: linux-kernel@...r.kernel.org,
linux-ext4@...r.kernel.org,
djwong@...nel.org,
hch@...radead.org,
brauner@...nel.org,
david@...morbit.com,
chandanbabu@...nel.org,
jack@...e.cz,
yi.zhang@...wei.com,
yi.zhang@...weicloud.com,
chengzhihao1@...wei.com,
yukuai3@...wei.com
Subject: [PATCH v3 0/3] iomap/xfs: fix stale data exposure when truncating realtime inodes
From: Zhang Yi <yi.zhang@...wei.com>
Changes since v2:
- Use div_u64_rem() instead of do_div().
Changes since v1:
- In iomap_truncate_page() and dax_truncate_page(), for the case of
truncate blocksize is not power of 2, use do_dive() to calculate the
offset.
This series fix a stale data exposure issue reported by Chandan when
running fstests generic/561 on xfs with realtime device[1]. The real
problem is xfs_setattr_size() doesn't zero out enough range when
truncating a realtime inode, please see the third patch or [1] for
details.
The first two patches modify iomap_truncate_page() and
dax_truncate_page() to pass filesystem identified blocksize, and drop
the assumption of i_blocksize() as Dave suggested. The third patch fix
the issue by modifying xfs_truncate_page() to pass the correct
blocksize, and make sure zeroed range have been flushed to disk before
updating i_size.
[1] https://lore.kernel.org/linux-xfs/87ttj8ircu.fsf@debian-BULLSEYE-live-builder-AMD64/
Thanks,
Yi.
Zhang Yi (3):
iomap: pass blocksize to iomap_truncate_page()
fsdax: pass blocksize to dax_truncate_page()
xfs: correct the zeroing truncate range
fs/dax.c | 13 +++++++++----
fs/ext2/inode.c | 4 ++--
fs/iomap/buffered-io.c | 13 +++++++++----
fs/xfs/xfs_iomap.c | 36 ++++++++++++++++++++++++++++++++----
fs/xfs/xfs_iops.c | 10 ----------
include/linux/dax.h | 4 ++--
include/linux/iomap.h | 4 ++--
7 files changed, 56 insertions(+), 28 deletions(-)
--
2.39.2
Powered by blists - more mailing lists