summaryrefslogtreecommitdiff
path: root/super1.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2014-08-15 15:45:54 +1000
committerNeilBrown <neilb@suse.de>2014-08-15 15:45:54 +1000
commit268cccac2e44e8e9166c9727e740d5d1f537b6a4 (patch)
tree7e3023a5a9b38e0ffe9603bb40d47508e6bbff13 /super1.c
parent73ff07327198533ccb21d7ad8765365d85843c28 (diff)
super1: don't allow adding a bitmap if there is no space.
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
Diffstat (limited to 'super1.c')
-rw-r--r--super1.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/super1.c b/super1.c
index 9834594c..02d6c7a1 100644
--- 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;
+ 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.. */