summaryrefslogtreecommitdiff
path: root/super1.c
diff options
context:
space:
mode:
authorJes Sorensen <Jes.Sorensen@redhat.com>2016-04-06 16:13:59 -0400
committerJes Sorensen <Jes.Sorensen@redhat.com>2016-04-06 16:13:59 -0400
commit1dcee1c9cbcf9592275914706b76b1931490092c (patch)
tree755023a2b6bf82c1db13c7e1a54abcdf88a064f4 /super1.c
parent95b55f18751f0d04adaec7fdddd9ccbe8cce5b18 (diff)
downloadmdadm-1dcee1c9cbcf9592275914706b76b1931490092c.tar.gz
super1: Clear memory allocated for superblock + bitmap before use
load_super1() did not clear memory allocated for the superblock + bitmap. This causes issues if the superblock does not contain a bitmap as later checks of bitmap features would rely on the bits being cleared. This bug has been around for a long time, but was only exposed in mdadm-3.4 with the introduction of the clustering code. Reported-by: Jan Stodola <jstodola@redhat.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Diffstat (limited to 'super1.c')
-rw-r--r--super1.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/super1.c b/super1.c
index d6f3c93..8d5543f 100644
--- a/super1.c
+++ b/super1.c
@@ -2016,6 +2016,8 @@ static int load_super1(struct supertype *st, int fd, char *devname)
return 1;
}
+ memset(super, 0, SUPER1_SIZE);
+
if (aread(&afd, super, MAX_SB_SIZE) != MAX_SB_SIZE) {
if (devname)
pr_err("Cannot read superblock on %s\n",