summaryrefslogtreecommitdiff
path: root/scripts/Makefile.thinlto
diff options
context:
space:
mode:
authorNamjae Jeon <linkinjeon@kernel.org>2026-10-06 13:06:39 +0900
committerNamjae Jeon <linkinjeon@kernel.org>2026-10-21 08:28:31 +0900
commit748ad4ba13cd14163ed7262c6ac304c380804167 (patch)
treea40aa04bd8f209bf4752a7d018131713d3e0e9bc /scripts/Makefile.thinlto
parentacea17f0f4c7742118375e96d3f876be34e449a5 (diff)
downloadlinux-748ad4ba13cd14163ed7262c6ac304c380804167.tar.gz
linux-748ad4ba13cd14163ed7262c6ac304c380804167.zip
exfat: zero invalid tail on partial overwrites
Buffered overwrite that ends before valid_size in the same filesystem block reads the entire block without IOMAP_F_ZERO_TAIL. If an existing cluster contains stale bytes beyond valid_size, the synchronous read loads them into the page cache and marks the block uptodate. Subsequent buffered reads can return these bytes while i_size exceeds valid_size. For example, with 512-byte blocks, valid_size of 1000 and i_size of 2048, a cold-cache overwrite of [900, 950) exposes stale data in [1000, 1024). Setting ZERO_TAIL for this write would also erase valid data in [950, 1000). Use iomap_truncate_page() to zero only the invalid tail at valid_size before preparing such buffered overwrites. Call it after dropping s_lock and before iomap locks the write folio. The inode lock held by buffered writes serializes valid_size against truncation and page_mkwrite. Skip direct I/O, fault mappings and new allocations. Writes that reach valid_size continue to use IOMAP_F_ZERO_TAIL. Fixes: 82a81a7352bc ("exfat: add iomap buffered I/O support") Cc: stable@vger.kernel.org Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions