]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
super1: don't allow adding a bitmap if there is no space.
authorNeilBrown <neilb@suse.de>
Fri, 15 Aug 2014 05:45:54 +0000 (15:45 +1000)
committerNeilBrown <neilb@suse.de>
Fri, 15 Aug 2014 05:45:54 +0000 (15:45 +1000)
If the data is too close to the superblock there may be
no space for a bitmap.
If that happens, fail the adding of the bitmap rather than
corrupt data.

Reported-by: Lars Wijtemans <rhelbugzilla@lars.wijtemans.nl>
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=922944

super1.c

index 9834594c3e44d1553d564659bc81c5209cb807a6..02d6c7a155d16999909ffb7e0140f919ab65ee8d 100644 (file)
--- a/super1.c
+++ b/super1.c
@@ -2105,6 +2105,10 @@ add_internal_bitmap1(struct supertype *st,
                /* Limit to 128K of bitmap when chunk size not requested */
                room = 128*2;
 
                /* Limit to 128K of bitmap when chunk size not requested */
                room = 128*2;
 
+       if (room <= 1)
+               /* No room for a bitmap */
+               return 0;
+
        max_bits = (room * 512 - sizeof(bitmap_super_t)) * 8;
 
        min_chunk = 4096; /* sub-page chunks don't work yet.. */
        max_bits = (room * 512 - sizeof(bitmap_super_t)) * 8;
 
        min_chunk = 4096; /* sub-page chunks don't work yet.. */