From: Artur Wojcik Date: Thu, 10 Dec 2009 19:03:40 +0000 (-0700) Subject: Fix for memory leak defect. X-Git-Tag: mdadm-3.1.2~63^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1602d52c99aff727440e1015411c6566736aaf7f;p=thirdparty%2Fmdadm.git 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 Signed-off-by: Dan Williams --- diff --git a/super-intel.c b/super-intel.c index fbde7e69..5c967b2a 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;