• Akinobu Mita's avatar
    frontswap: fix incorrect zeroing and allocation size for frontswap_map · 7b57976d
    Akinobu Mita authored
    The bitmap accessed by bitops must have enough size to hold the required
    numbers of bits rounded up to a multiple of BITS_PER_LONG.  And the
    bitmap must not be zeroed by memset() if the number of bits cleared is
    not a multiple of BITS_PER_LONG.
    
    This fixes incorrect zeroing and allocation size for frontswap_map.  The
    incorrect zeroing part doesn't cause any problem because frontswap_map
    is freed just after zeroing.  But the wrongly calculated allocation size
    may cause the problem.
    
    For 32bit systems, the allocation size of frontswap_map is about twice
    as large as required size.  For 64bit systems, the allocation size is
    smaller than requeired if the number of bits is not a multiple of
    BITS_PER_LONG.
    Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    7b57976d
swapfile.c 65.6 KB