• Florian-Ewald Mueller's avatar
    md/bitmap: Fix bitmap chunk size overflow issues · 45552111
    Florian-Ewald Mueller authored
    - limit bitmap chunk size internal u64 variable to values not overflowing
      the u32 bitmap superblock structure variable stored on persistent media
    - assign bitmap chunk size internal u64 variable from unsigned values to
      avoid possible sign extension artifacts when assigning from a s32 value
    
    The bug has been there since at least kernel 4.0.
    Steps to reproduce it:
    1: mdadm -C /dev/mdx -l 1 --bitmap=internal --bitmap-chunk=256M -e 1.2
    -n2 /dev/rnbd1 /dev/rnbd2
    2 resize member device rnbd1 and rnbd2 to 8 TB
    3 mdadm --grow /dev/mdx --size=max
    
    The bitmap_chunksize will overflow without patch.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarFlorian-Ewald Mueller <florian-ewald.mueller@ionos.com>
    Signed-off-by: default avatarJack Wang <jinpu.wang@ionos.com>
    Signed-off-by: default avatarSong Liu <song@kernel.org>
    45552111
md-bitmap.c 70.7 KB