Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f3e3edc4 authored by Mikulas Patocka's avatar Mikulas Patocka Committed by Eric Biggers
Browse files

UPSTREAM: dm crypt: don't decrease device limits



dm-crypt should only increase device limits, it should not decrease them.

This fixes a bug where the user could creates a crypt device with 1024
sector size on the top of scsi device that had 4096 logical block size.
The limit 4096 would be lost and the user could incorrectly send
1024-I/Os to the crypt device.

Cc: stable@vger.kernel.org
Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>

(cherry picked from commit bc9e9cf0401f18e33b78d4c8a518661b8346baf7)
Bug: 112008522
Test: As series, see Ie247fd41b11adcf8520de0b1554568a1b7155860
Change-Id: I31b86a50856a98326c5aa153cf492c4d1db7f86a
Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
parent 946db241
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -2135,11 +2135,11 @@ static void crypt_io_hints(struct dm_target *ti, struct queue_limits *limits)
	 */
	limits->max_segment_size = PAGE_SIZE;

	if (cc->sector_size != (1 << SECTOR_SHIFT)) {
		limits->logical_block_size = cc->sector_size;
		limits->physical_block_size = cc->sector_size;
		blk_limits_io_min(limits, cc->sector_size);
	}
	limits->logical_block_size =
		max_t(unsigned short, limits->logical_block_size, cc->sector_size);
	limits->physical_block_size =
		max_t(unsigned, limits->physical_block_size, cc->sector_size);
	limits->io_min = max_t(unsigned, limits->io_min, cc->sector_size);
}

static struct target_type crypt_target = {