From: Neil Brown Date: Tue, 29 Apr 2008 07:13:53 +0000 (+1000) Subject: Fix possible bug with bitmap space allocation with v1.0 metadata X-Git-Tag: mdadm-2.6.5~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=519561f73f7ba987affde8b174d2691bb098439d;p=thirdparty%2Fmdadm.git Fix possible bug with bitmap space allocation with v1.0 metadata When adding a device to an array, make sure we don't reserve so much space for the bitmap that there isn't room for the data. --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/md.4 b/md.4 index db39aba6..fb7267f2 100644 --- a/md.4 +++ b/md.4 @@ -1,9 +1,9 @@ -''' Copyright Neil Brown and others. -''' This program is free software; you can redistribute it and/or modify -''' it under the terms of the GNU General Public License as published by -''' the Free Software Foundation; either version 2 of the License, or -''' (at your option) any later version. -''' See file COPYING in distribution for details. +.\" Copyright Neil Brown and others. +.\" This program is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU General Public License as published by +.\" the Free Software Foundation; either version 2 of the License, or +.\" (at your option) any later version. +.\" See file COPYING in distribution for details. .TH MD 4 .SH NAME md \- Multiple Device driver aka Linux Software RAID diff --git a/mdadm.conf.5 b/mdadm.conf.5 index 4807055b..aadfb23e 100644 --- a/mdadm.conf.5 +++ b/mdadm.conf.5 @@ -1,9 +1,9 @@ -''' Copyright Neil Brown and others. -''' This program is free software; you can redistribute it and/or modify -''' it under the terms of the GNU General Public License as published by -''' the Free Software Foundation; either version 2 of the License, or -''' (at your option) any later version. -''' See file COPYING in distribution for details. +.\" Copyright Neil Brown and others. +.\" This program is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU General Public License as published by +.\" the Free Software Foundation; either version 2 of the License, or +.\" (at your option) any later version. +.\" See file COPYING in distribution for details. .TH MDADM.CONF 5 .SH NAME mdadm.conf \- configuration for management of Software RAID with mdadm diff --git a/super1.c b/super1.c index 887db10c..7ea6958a 100644 --- a/super1.c +++ b/super1.c @@ -905,7 +905,7 @@ static int write_init_super1(struct supertype *st, * for a bitmap. */ array_size = __le64_to_cpu(sb->size); - /* work out how much space we left of a bitmap */ + /* work out how much space we left for a bitmap */ bm_space = choose_bm_space(array_size); switch(st->minor_version) { @@ -915,6 +915,8 @@ static int write_init_super1(struct supertype *st, sb_offset &= ~(4*2-1); sb->super_offset = __cpu_to_le64(sb_offset); sb->data_offset = __cpu_to_le64(0); + if (sb_offset - bm_space < array_size) + bm_space = sb_offset - array_size; sb->data_size = __cpu_to_le64(sb_offset - bm_space); break; case 1: