diff options
author | Neelesh Gupta <neelegup@linux.vnet.ibm.com> | 2015-05-18 21:19:23 +0530 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2015-05-20 13:44:01 +1000 |
commit | 537e006a8d7f8210ca096701dafd86ce04b1a86b (patch) | |
tree | 2ef910a0327fd6c90f2a09a7f9ee3fb333126007 /hdata | |
parent | eea244857f9ac32a87d40553b1b9369c13920c38 (diff) | |
download | skiboot-537e006a8d7f8210ca096701dafd86ce04b1a86b.zip skiboot-537e006a8d7f8210ca096701dafd86ce04b1a86b.tar.gz skiboot-537e006a8d7f8210ca096701dafd86ce04b1a86b.tar.bz2 |
hdata: Fix memory leak
Fix leak and avoid repeated call to the same function
Signed-off-by: Neelesh Gupta <neelegup@linux.vnet.ibm.com>
Reviewed-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'hdata')
-rw-r--r-- | hdata/memory.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/hdata/memory.c b/hdata/memory.c index 18beb3b..019e5fe 100644 --- a/hdata/memory.c +++ b/hdata/memory.c @@ -121,24 +121,26 @@ static bool add_address_range(struct dt_node *root, size_t namesz = sizeof("memory@") + STR_MAX_CHARS(reg[0]); name = (char*)malloc(namesz); + assert(name); + + chip_id = pcid_to_chip_id(be32_to_cpu(arange->chip)); prlog(PR_DEBUG, " Range: 0x%016llx..0x%016llx " "on Chip 0x%x mattr: 0x%x\n", (long long)arange->start, (long long)arange->end, - pcid_to_chip_id(arange->chip), arange->mirror_attr); + chip_id, arange->mirror_attr); /* reg contains start and length */ reg[0] = cleanup_addr(be64_to_cpu(arange->start)); reg[1] = cleanup_addr(be64_to_cpu(arange->end)) - reg[0]; - chip_id = pcid_to_chip_id(be32_to_cpu(arange->chip)); - if (be16_to_cpu(id->flags) & MS_AREA_SHARED) { /* Only enter shared nodes once. */ mem = find_shared(root, be16_to_cpu(id->share_id), reg[0], reg[1]); if (mem) { append_chip_id(mem, chip_id); + free(name); return true; } } |