summaryrefslogtreecommitdiff
path: root/kexec/kexec.c
diff options
context:
space:
mode:
authorHorms <horms@verge.net.au>2007-02-01 11:51:05 +0900
committerSimon Horman <horms@verge.net.au>2007-02-01 17:28:27 +0900
commit8323ed7b3119077cd6fef6ca3615ba1b5b24d2cd (patch)
treeacb909263db486c6e019a01e50ab9fda661e14f6 /kexec/kexec.c
parent9bc3f8f7df46d8253bccaede1ea5ad3f21678f80 (diff)
Clean up memory allocations in locate_hole()
* Exit if malloc fails - previously the error was ignored * Free allocated memory before returning Signed-off-by: Simon Horman <horms@verge.net.au> Acked-by: Magnus Damm <magnus@valinux.co.jp>
Diffstat (limited to 'kexec/kexec.c')
-rw-r--r--kexec/kexec.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/kexec/kexec.c b/kexec/kexec.c
index 477b426..a1e9317 100644
--- a/kexec/kexec.c
+++ b/kexec/kexec.c
@@ -197,6 +197,10 @@ unsigned long locate_hole(struct kexec_info *info,
/* Compute the free memory ranges */
max_mem_ranges = memory_ranges + info->nr_segments;
mem_range = malloc(max_mem_ranges *sizeof(struct memory_range));
+ if (!mem_range) {
+ perror("locate_hole: malloc");
+ exit(-1);
+ }
mem_ranges = 0;
/* Perform a merge on the 2 sorted lists of memory ranges */
@@ -265,6 +269,7 @@ unsigned long locate_hole(struct kexec_info *info,
}
}
}
+ free(mem_range);
if (hole_base == ULONG_MAX) {
fprintf(stderr, "Could not find a free area of memory of "
"%lx bytes...\n", hole_size);