On Wed, Sep 25, 2024 at 11:01:46PM +1000, Dave Chinner wrote:
On Wed, Sep 25, 2024 at 07:27:38AM -0400, Sasha Levin wrote:
From: Pankaj Raghav p.raghav@samsung.com
[ 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.
Dropped, and sorry about sending this one out twice!