aboutsummaryrefslogtreecommitdiffstats
path: root/managemon.c
diff options
context:
space:
mode:
authorJes Sorensen <Jes.Sorensen@redhat.com>2011-11-03 08:08:09 +1100
committerNeilBrown <neilb@suse.de>2011-11-03 08:08:09 +1100
commit3e1d79b2d66e06ee33df57006f1c15404f849738 (patch)
treeeea7d4fd10460bd54ce4f945aef159a6f8d33b2d /managemon.c
parentf56128b9bc8e080ea576b0c1cbf0cb40cfc0b657 (diff)
downloadmdadm-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.c6
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;