[lkml]   [2019]   [Mar]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
Subject[PATCH 5.0 178/238] dm: fix to_sector() for 32bit
5.0-stable review patch.  If anyone has any objections, please let me know.


From: NeilBrown <>

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: (v4.2+)
Reported-and-tested-by: Guillaume Perréal <>
Signed-off-by: NeilBrown <>
Signed-off-by: Mike Snitzer <>
Signed-off-by: Greg Kroah-Hartman <>

include/linux/device-mapper.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- 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);

 \ /
  Last update: 2019-03-22 13:29    [W:0.572 / U:5.260 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site