On Wed, Sep 25, 2024 at 07:27:38AM -0400, Sasha Levin wrote:
From: Pankaj Raghav <p.raghav@xxxxxxxxxxx>
[ Upstream commit 10553a91652d995274da63fc317470f703765081 ]
iomap_dio_zero() will pad a fs block with zeroes if the direct IO size
< fs block size. iomap_dio_zero() has an implicit assumption that fs block
size < page_size. This is true for most filesystems at the moment.
If the block size > page size, this will send the contents of the page
next to zero page(as len > PAGE_SIZE) to the underlying block device,
causing FS corruption.
iomap is a generic infrastructure and it should not make any assumptions
about the fs block size and the page size of the system.
Please drop this. It is for support of new functionality that was
just merged and has no relevance to older kernels. It is not a bug
fix.
And ....
+
+ set_memory_ro((unsigned long)page_address(zero_page),
+ 1U << IOMAP_ZERO_PAGE_ORDER);
.... this will cause stable kernel regressions.
It was removed later in the merge because it is unnecessary and
causes boot failures on (at least) some Power architectures.