On 6/17/25 15:36, wangzijie wrote: >> On 6/17/25 11:57, wangzijie wrote: >>> To prevent non-section-aligned size pinned file generated from truncation, >>> add check condition in setattr. >>> >>> Signed-off-by: wangzijie <wangzij...@honor.com> >>> --- >>> fs/f2fs/file.c | 6 ++++++ >>> 1 file changed, 6 insertions(+) >>> >>> diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c >>> index 6bd3de64f..72f7d1b4a 100644 >>> --- a/fs/f2fs/file.c >>> +++ b/fs/f2fs/file.c >>> @@ -1026,6 +1026,7 @@ int f2fs_setattr(struct mnt_idmap *idmap, struct >>> dentry *dentry, >>> { >>> struct inode *inode = d_inode(dentry); >>> struct f2fs_inode_info *fi = F2FS_I(inode); >>> + struct f2fs_sb_info *sbi = F2FS_I_SB(inode); >>> int err; >>> >>> if (unlikely(f2fs_cp_error(F2FS_I_SB(inode)))) >>> @@ -1047,6 +1048,11 @@ int f2fs_setattr(struct mnt_idmap *idmap, struct >>> dentry *dentry, >>> !IS_ALIGNED(attr->ia_size, >>> F2FS_BLK_TO_BYTES(fi->i_cluster_size))) >>> return -EINVAL; >>> + if (f2fs_is_pinned_file(inode) && >>> + attr->ia_size < i_size_read(inode) && >> >> Do we need to consider attr->ia_size > i_size case? >> >> Thanks, > > Hi, Chao > After commit 3fdd89b452c2("f2fs: prevent writing without fallocate() for > pinned > files"), when we want to write data to pinned file, we need to use > pin+fallocate, > and we did CAP_BLKS_PER_SEC roundup align when fallocate pinned file: > > block_t sec_len = roundup(map.m_len, sec_blks); > > Even if we truncate the file to a larger size(maybe larger than sec_len, > section > align or not), and write data to offset beyond sec_len, the write will > fail(commit > 3fdd89b452c2 prevent it). The scattered pin block cannot be generated by this > way, > so I did not consider attr->ia_size > i_size case. > Do you have some suggestions?
Ah, correct, so what about adding comments here to describe why we don't need consider attr->ia_size > i_size case? > >>> + !IS_ALIGNED(attr->ia_size, >>> + F2FS_BLK_TO_BYTES(CAP_BLKS_PER_SEC(sbi)))) >>> + return -EINVAL; >>> } >>> >>> err = setattr_prepare(idmap, dentry, attr); > > > _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel