]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
disk_init_and_add(): Fail if opening sysfs file descriptors fail
authorJes Sorensen <Jes.Sorensen@redhat.com>
Wed, 2 Nov 2011 21:08:09 +0000 (08:08 +1100)
committerNeilBrown <neilb@suse.de>
Wed, 2 Nov 2011 21:08:09 +0000 (08:08 +1100)
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: NeilBrown <neilb@suse.de>
managemon.c

index 9e0a34d758509b0d00b1a9f6634fab97c974d2e2..fceaeb9c41a073c9da884301b702ea30c1c3d2d7 100644 (file)
@@ -409,7 +409,13 @@ static int disk_init_and_add(struct mdinfo *disk, struct mdinfo *clone,
 
        *disk = *clone;
        disk->recovery_fd = sysfs_open(aa->devnum, disk->sys_name, "recovery_start");
 
        *disk = *clone;
        disk->recovery_fd = sysfs_open(aa->devnum, disk->sys_name, "recovery_start");
+       if (disk->recovery_fd < 0)
+               return -1;
        disk->state_fd = sysfs_open(aa->devnum, disk->sys_name, "state");
        disk->state_fd = sysfs_open(aa->devnum, disk->sys_name, "state");
+       if (disk->state_fd < 0) {
+               close(disk->recovery_fd);
+               return -1;
+       }
        disk->prev_state = read_dev_state(disk->state_fd);
        disk->curr_state = disk->prev_state;
        disk->next = aa->info.devs;
        disk->prev_state = read_dev_state(disk->state_fd);
        disk->curr_state = disk->prev_state;
        disk->next = aa->info.devs;