aboutsummaryrefslogtreecommitdiff
path: root/hdata
diff options
context:
space:
mode:
authorNeelesh Gupta <neelegup@linux.vnet.ibm.com>2015-05-18 21:19:23 +0530
committerStewart Smith <stewart@linux.vnet.ibm.com>2015-05-20 13:44:01 +1000
commit537e006a8d7f8210ca096701dafd86ce04b1a86b (patch)
tree2ef910a0327fd6c90f2a09a7f9ee3fb333126007 /hdata
parenteea244857f9ac32a87d40553b1b9369c13920c38 (diff)
downloadskiboot-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.c8
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;
}
}