dm: fix casting bug in dm_merge_bvec()
authorJoe Thornber <ejt@redhat.com>
Fri, 29 May 2015 13:52:51 +0000 (14:52 +0100)
committerMike Snitzer <snitzer@redhat.com>
Fri, 29 May 2015 17:41:16 +0000 (13:41 -0400)
commit1c220c69ce0dcc0f234a9f263ad9c0864f971852
tree8ab6d754a212bd1fbfad8909686bc893cb889a82
parent15b94a690470038aa08247eedbebbe7e2218d5ee
dm: fix casting bug in dm_merge_bvec()

dm_merge_bvec() was originally added in f6fccb ("dm: introduce
merge_bvec_fn").  In that commit a value in sectors is converted to
bytes using << 9, and then assigned to an int.  This code made
assumptions about the value of BIO_MAX_SECTORS.

A later commit 148e51 ("dm: improve documentation and code clarity in
dm_merge_bvec") was meant to have no functional change but it removed
the use of BIO_MAX_SECTORS in favor of using queue_max_sectors().  At
this point the cast from sector_t to int resulted in a zero value.  The
fallout being dm_merge_bvec() would only allow a single page to be added
to a bio.

This interim fix is minimal for the benefit of stable@ because the more
comprehensive cleanup of passing a sector_t to all DM targets' merge
function will impact quite a few DM targets.

Signed-off-by: Joe Thornber <ejt@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Cc: stable@vger.kernel.org # 3.19+
drivers/md/dm.c