dm cache: fix truncation bug when mapping I/O to >2TB fast device
authorHeinz Mauelshagen <heinzm@redhat.com>
Thu, 27 Feb 2014 21:46:48 +0000 (22:46 +0100)
committerMike Snitzer <snitzer@redhat.com>
Fri, 28 Feb 2014 14:23:02 +0000 (09:23 -0500)
commite0d849fad746cb36a6822e4595d8ba9bf0adf7fa
treed5ea46f6692bc8de0260843a59d386db4bb9030c
parent7d48935eff401bb7970e73e822871a10e3643df1
dm cache: fix truncation bug when mapping I/O to >2TB fast device

When remapping a block to the cache's fast device that is larger than
2TB we must not truncate the destination sector to 32bits.  The 32bit
temporary result of from_cblock() was being overflowed in
remap_to_cache() due to the logical left shift.

Use an intermediate 64bit type to store the 32bit from_cblock() result
to fix the overflow.

Signed-off-by: Heinz Mauelshagen <heinzm@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Cc: stable@vger.kernel.org
drivers/md/dm-cache-target.c