diff options
author | Gerald Schaefer <gerald.schaefer@de.ibm.com> | 2017-01-30 09:52:14 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-03-14 22:02:41 -0400 |
commit | b848102542f5cab63606ad4a45da2e5edc14c571 (patch) | |
tree | ba116e0fb4dc529ea44c526bd115151ce9d3c6b4 | |
parent | 5cec5e32ba5637076aa8f06d61f89cecd877b78e (diff) |
s390/dcssblk: fix device size calculation in dcssblk_direct_access()
commit a63f53e34db8b49675448d03ae324f6c5bc04fe6 upstream.
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")
Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/s390/block/dcssblk.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/s390/block/dcssblk.c b/drivers/s390/block/dcssblk.c index 9d66b4fb174b..415d10a67b7a 100644 --- a/drivers/s390/block/dcssblk.c +++ b/drivers/s390/block/dcssblk.c | |||
@@ -892,7 +892,7 @@ dcssblk_direct_access (struct block_device *bdev, sector_t secnum, | |||
892 | dev_info = bdev->bd_disk->private_data; | 892 | dev_info = bdev->bd_disk->private_data; |
893 | if (!dev_info) | 893 | if (!dev_info) |
894 | return -ENODEV; | 894 | return -ENODEV; |
895 | dev_sz = dev_info->end - dev_info->start; | 895 | dev_sz = dev_info->end - dev_info->start + 1; |
896 | offset = secnum * 512; | 896 | offset = secnum * 512; |
897 | *kaddr = (void *) dev_info->start + offset; | 897 | *kaddr = (void *) dev_info->start + offset; |
898 | *pfn = __pfn_to_pfn_t(PFN_DOWN(dev_info->start + offset), PFN_DEV); | 898 | *pfn = __pfn_to_pfn_t(PFN_DOWN(dev_info->start + offset), PFN_DEV); |