diff options
author | Jes Sorensen <Jes.Sorensen@redhat.com> | 2011-11-03 08:08:09 +1100 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2011-11-03 08:08:09 +1100 |
commit | 3e1d79b2d66e06ee33df57006f1c15404f849738 (patch) | |
tree | eea7d4fd10460bd54ce4f945aef159a6f8d33b2d /managemon.c | |
parent | f56128b9bc8e080ea576b0c1cbf0cb40cfc0b657 (diff) | |
download | mdadm-3e1d79b2d66e06ee33df57006f1c15404f849738.tar.gz |
disk_init_and_add(): Fail if opening sysfs file descriptors fail
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'managemon.c')
-rw-r--r-- | managemon.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/managemon.c b/managemon.c index 9e0a34d7..fceaeb9c 100644 --- a/managemon.c +++ b/managemon.c @@ -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"); + if (disk->recovery_fd < 0) + return -1; 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; |