Commit 36e4f568 authored by Gerald Schaefer's avatar Gerald Schaefer Committed by Sasha Levin

s390/dcssblk: fix device size calculation in dcssblk_direct_access()

[ Upstream commit a63f53e3 ]

Since commit dd22f551 "block: Change direct_access calling convention",
the device size calculation in dcssblk_direct_access() is off-by-one.
This results in bdev_direct_access() always returning -ENXIO because the
returned value is not page aligned.

Fix this by adding 1 to the dev_sz calculation.

Fixes: dd22f551 ("block: Change direct_access calling convention")
Cc: <stable@vger.kernel.org> # 4.0+
Signed-off-by: default avatarGerald Schaefer <gerald.schaefer@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: default avatarSasha Levin <alexander.levin@verizon.com>
parent 5e6ef5ef
...@@ -887,7 +887,7 @@ dcssblk_direct_access (struct block_device *bdev, sector_t secnum, ...@@ -887,7 +887,7 @@ dcssblk_direct_access (struct block_device *bdev, sector_t secnum,
dev_info = bdev->bd_disk->private_data; dev_info = bdev->bd_disk->private_data;
if (!dev_info) if (!dev_info)
return -ENODEV; return -ENODEV;
dev_sz = dev_info->end - dev_info->start; dev_sz = dev_info->end - dev_info->start + 1;
offset = secnum * 512; offset = secnum * 512;
*kaddr = (void *) (dev_info->start + offset); *kaddr = (void *) (dev_info->start + offset);
*pfn = virt_to_phys(*kaddr) >> PAGE_SHIFT; *pfn = virt_to_phys(*kaddr) >> PAGE_SHIFT;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment