| From bc9e9cf0401f18e33b78d4c8a518661b8346baf7 Mon Sep 17 00:00:00 2001 |
| From: Mikulas Patocka <mpatocka@redhat.com> |
| Date: Fri, 10 Aug 2018 11:23:56 -0400 |
| Subject: dm crypt: don't decrease device limits |
| |
| From: Mikulas Patocka <mpatocka@redhat.com> |
| |
| commit bc9e9cf0401f18e33b78d4c8a518661b8346baf7 upstream. |
| |
| 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: Mikulas Patocka <mpatocka@redhat.com> |
| Signed-off-by: Mike Snitzer <snitzer@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/md/dm-crypt.c | 10 +++++----- |
| 1 file changed, 5 insertions(+), 5 deletions(-) |
| |
| --- a/drivers/md/dm-crypt.c |
| +++ b/drivers/md/dm-crypt.c |
| @@ -3072,11 +3072,11 @@ static void crypt_io_hints(struct dm_tar |
| */ |
| 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 = { |