summaryrefslogtreecommitdiff
path: root/kexec/arch/ppc64/kexec-ppc64.c
diff options
context:
space:
mode:
Diffstat (limited to 'kexec/arch/ppc64/kexec-ppc64.c')
-rw-r--r--kexec/arch/ppc64/kexec-ppc64.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/kexec/arch/ppc64/kexec-ppc64.c b/kexec/arch/ppc64/kexec-ppc64.c
index 0576f6d..5429863 100644
--- a/kexec/arch/ppc64/kexec-ppc64.c
+++ b/kexec/arch/ppc64/kexec-ppc64.c
@@ -66,26 +66,32 @@ static void cleanup_memory_ranges()
*/
static int alloc_memory_ranges()
{
- memory_range = (struct memory_range *) malloc(
- (sizeof(struct memory_range) * max_memory_ranges));
+ int memory_range_len, exclude_range_len;
+
+ memory_range_len = sizeof(struct memory_range) * max_memory_ranges;
+ exclude_range_len = sizeof(struct exclude_range) * max_memory_ranges;
+
+ memory_range = (struct memory_range *) malloc(memory_range_len);
if (!memory_range)
- goto err1;
+ return -1;
- base_memory_range = (struct memory_range *) malloc(
- (sizeof(struct memory_range) * max_memory_ranges));
+ base_memory_range = (struct memory_range *) malloc(memory_range_len);
if (!base_memory_range)
goto err1;
- exclude_range = (struct exclude_range *) malloc(
- (sizeof(struct exclude_range) * max_memory_ranges));
+ exclude_range = (struct exclude_range *) malloc(exclude_range_len);
if (!exclude_range)
goto err1;
- usablemem_rgns.ranges = (struct exclude_range *) malloc(
- (sizeof(struct exclude_range) * max_memory_ranges));
+ usablemem_rgns.ranges = (struct exclude_range *)
+ malloc(exclude_range_len);
if (!(usablemem_rgns.ranges))
goto err1;
+ memset(memory_range, 0, memory_range_len);
+ memset(base_memory_range, 0, memory_range_len);
+ memset(exclude_range, 0, exclude_range_len);
+ memset(usablemem_rgns.ranges, 0, exclude_range_len);
return 0;
err1: