Commit 130e6de6 authored by Jaehoon Kim's avatar Jaehoon Kim Committed by Jens Axboe
Browse files

s390/dasd: enforce dma_alignment to ensure proper buffer validation



The block layer validates buffer alignment using the device's
dma_alignment value. If dma_alignment is smaller than
logical_block_size(bp_block) -1, misaligned buffer incorrectly pass
validation and propagate to the lower-level driver.

This patch adjusts dma_alignment to be at least logical_block_size -1,
ensuring that misalignment buffers are properly rejected at the block
layer and do not reach the DASD driver unnecessarily.

Fixes: 2a07bb64 ("s390/dasd: Remove DMA alignment")
Reviewed-by: default avatarStefan Haberland <sth@linux.ibm.com>
Cc: stable@vger.kernel.org #6.11+
Signed-off-by: default avatarJaehoon Kim <jhkim@linux.ibm.com>
Signed-off-by: default avatarStefan Haberland <sth@linux.ibm.com>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 8f4ed0ce
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -334,6 +334,11 @@ static int dasd_state_basic_to_ready(struct dasd_device *device)
	lim.max_dev_sectors = device->discipline->max_sectors(block);
	lim.max_hw_sectors = lim.max_dev_sectors;
	lim.logical_block_size = block->bp_block;
	/*
	 * Adjust dma_alignment to match block_size - 1
	 * to ensure proper buffer alignment checks in the block layer.
	 */
	lim.dma_alignment = lim.logical_block_size - 1;

	if (device->discipline->has_discard) {
		unsigned int max_bytes;