From: majianpeng Date: Mon, 28 May 2012 23:21:51 +0000 (+1000) Subject: mdadm: Fix Segmentation fault. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fheads%2Fdata_offset;p=thirdparty%2Fmdadm.git mdadm: Fix Segmentation fault. In function write_init_super1(): If "rv = store_super1(st, di->fd)" return error and the di is the last. Then the di = NULL && rv > 0, so exec: if (rv) fprintf(stderr, Name ": Failed to write metadata to%s\n", di->devname); will be segmentation fault. Signed-off-by: majianpeng Signed-off-by: NeilBrown --- diff --git a/super1.c b/super1.c index 871af3f0..26f99745 100644 --- a/super1.c +++ b/super1.c @@ -1162,7 +1162,7 @@ static int write_init_super1(struct supertype *st) unsigned long long sb_offset, headroom; long long data_offset; - for (di = st->info; di && ! rv ; di = di->next) { + for (di = st->info; di; di = di->next) { if (di->disk.state == 1) continue; if (di->fd < 0) @@ -1321,6 +1321,8 @@ static int write_init_super1(struct supertype *st) rv = st->ss->write_bitmap(st, di->fd); close(di->fd); di->fd = -1; + if (rv) + goto error_out; } error_out: if (rv)