• Nikos Tsironis's avatar
    dm clone metadata: Fix return type of dm_clone_nr_of_hydrated_regions() · 81d5553d
    Nikos Tsironis authored
    dm_clone_nr_of_hydrated_regions() returns the number of regions that
    have been hydrated so far. In order to do so it employs bitmap_weight().
    
    Until now, the return type of dm_clone_nr_of_hydrated_regions() was
    unsigned long.
    
    Because bitmap_weight() returns an int, in case BITS_PER_LONG == 64 and
    the return value of bitmap_weight() is 2^31 (the maximum allowed number
    of regions for a device), the result is sign extended from 32 bits to 64
    bits and an incorrect value is displayed, in the status output of
    dm-clone, as the number of hydrated regions.
    
    Fix this by having dm_clone_nr_of_hydrated_regions() return an unsigned
    int.
    
    Fixes: 7431b783 ("dm: add clone target")
    Cc: stable@vger.kernel.org # v5.4+
    Signed-off-by: default avatarNikos Tsironis <ntsironis@arrikto.com>
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    81d5553d
dm-clone-metadata.c 24.1 KB