diff options
Diffstat (limited to 'kexec/arch/ppc64/kexec-ppc64.c')
-rw-r--r-- | kexec/arch/ppc64/kexec-ppc64.c | 24 |
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: |