diff options
| author | NeilBrown <neil@brown.name> | 2019-01-06 21:06:25 +1100 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-03-23 20:11:34 +0100 |
| commit | dca22c59e47e2af32943c471aa879fa9ba20baf0 (patch) | |
| tree | db47b1069c79a99f689464fd7e9aeddd90ebf342 | |
| parent | a8964a63780ce3ea4ada492cfe8edef9c1336022 (diff) | |
| download | blackbird-obmc-linux-dca22c59e47e2af32943c471aa879fa9ba20baf0.tar.gz blackbird-obmc-linux-dca22c59e47e2af32943c471aa879fa9ba20baf0.zip | |
dm: fix to_sector() for 32bit
commit 0bdb50c531f7377a9da80d3ce2d61f389c84cb30 upstream.
A dm-raid array with devices larger than 4GB won't assemble on
a 32 bit host since _check_data_dev_sectors() was added in 4.16.
This is because to_sector() treats its argument as an "unsigned long"
which is 32bits (4GB) on a 32bit host. Using "unsigned long long"
is more correct.
Kernels as early as 4.2 can have other problems due to to_sector()
being used on the size of a device.
Fixes: 0cf4503174c1 ("dm raid: add support for the MD RAID0 personality")
cc: stable@vger.kernel.org (v4.2+)
Reported-and-tested-by: Guillaume Perréal <gperreal@free.fr>
Signed-off-by: NeilBrown <neil@brown.name>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| -rw-r--r-- | include/linux/device-mapper.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/device-mapper.h b/include/linux/device-mapper.h index e528baebad69..bee4bb9f81bc 100644 --- a/include/linux/device-mapper.h +++ b/include/linux/device-mapper.h @@ -609,7 +609,7 @@ do { \ */ #define dm_target_offset(ti, sector) ((sector) - (ti)->begin) -static inline sector_t to_sector(unsigned long n) +static inline sector_t to_sector(unsigned long long n) { return (n >> SECTOR_SHIFT); } |

