• Joe Thornber's avatar
    dm: fix casting bug in dm_merge_bvec() · 1c220c69
    Joe Thornber authored
    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: default avatarJoe Thornber <ejt@redhat.com>
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    Cc: stable@vger.kernel.org # 3.19+
    1c220c69
dm.c 84.4 KB