summaryrefslogtreecommitdiffstats
path: root/super-intel.c
diff options
context:
space:
mode:
authorArtur Wojcik <artur.wojcik@intel.com>2009-12-10 12:03:40 -0700
committerDan Williams <dan.j.williams@intel.com>2009-12-10 12:03:40 -0700
commit1602d52c99aff727440e1015411c6566736aaf7f (patch)
tree7c5fb2a3620ca753258c0886dfe9f47ecae5c84a /super-intel.c
parente207da2f1b16470429d621ee47938e3215844caa (diff)
downloadmdadm-1602d52c99aff727440e1015411c6566736aaf7f.tar.gz
mdadm-1602d52c99aff727440e1015411c6566736aaf7f.tar.xz
mdadm-1602d52c99aff727440e1015411c6566736aaf7f.zip
Fix for memory leak defect.
Possible memory leak. Dynamic memory stored in 'sra' allocated through function 'sysfs_read' at line 2484 can be lost at lines 2491, 2560 and 2571. Signed-off-by: Artur Wojcik <artur.wojcik@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'super-intel.c')
-rw-r--r--super-intel.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/super-intel.c b/super-intel.c
index fbde7e6..5c967b2 100644
--- a/super-intel.c
+++ b/super-intel.c
@@ -2498,9 +2498,10 @@ static int load_super_imsm_all(struct supertype *st, int fd, void **sbp,
if (sra->array.major_version != -1 ||
sra->array.minor_version != -2 ||
- strcmp(sra->text_version, "imsm") != 0)
- return 1;
-
+ strcmp(sra->text_version, "imsm") != 0) {
+ err = 1;
+ goto error;
+ }
/* load all mpbs */
for (sd = sra->devs, i = 0; sd; sd = sd->next, i++) {
struct intel_super *s = alloc_super(0);
@@ -2566,6 +2567,7 @@ static int load_super_imsm_all(struct supertype *st, int fd, void **sbp,
super_list = super_list->next;
free_imsm(s);
}
+ sysfs_free(sra);
if (err)
return err;