diff options
author | Artur Wojcik <artur.wojcik@intel.com> | 2009-12-10 12:03:40 -0700 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2009-12-10 12:03:40 -0700 |
commit | 1602d52c99aff727440e1015411c6566736aaf7f (patch) | |
tree | 7c5fb2a3620ca753258c0886dfe9f47ecae5c84a | |
parent | e207da2f1b16470429d621ee47938e3215844caa (diff) | |
download | mdadm-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>
-rw-r--r-- | super-intel.c | 8 |
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; |