[Skiboot] [PATCH] core/cpu: Fix memory allocation for job array

Vaidyanathan Srinivasan svaidy at linux.vnet.ibm.com
Mon Sep 3 23:03:21 AEST 2018


fixes: 7a3f307e core/cpu: parallelise global CPU register setting jobs

This bug would result in boot-hang on some configurations due to
cpu_wait_job() endlessly waiting for the last bogus jobs[cpu->pir] pointer.

Reported-by: Stephanie Swanson <swanman at us.ibm.com>
Reported-by: Vasant Hegde <hegdevasant at linux.vnet.ibm.com>
Reviewed-by: Mahesh Salgaonkar <mahesh at linux.vnet.ibm.com>
Reviewed-by: Vasant Hegde <hegdevasant at linux.vnet.ibm.com>
Reviewed-by: Nicholas Piggin <npiggin at gmail.com>
Signed-off-by: Vaidyanathan Srinivasan <svaidy at linux.vnet.ibm.com>
---
 core/cpu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/core/cpu.c b/core/cpu.c
index 88477f82..cc5b88c5 100644
--- a/core/cpu.c
+++ b/core/cpu.c
@@ -1373,7 +1373,7 @@ static int64_t cpu_change_all_hid0(struct hid0_change_req *req)
 	struct cpu_thread *cpu;
 	struct cpu_job **jobs;
 
-	jobs = zalloc(sizeof(struct cpu_job *) * cpu_max_pir + 1);
+	jobs = zalloc(sizeof(struct cpu_job *) * (cpu_max_pir + 1));
 	assert(jobs);
 
 	for_each_available_cpu(cpu) {
@@ -1424,7 +1424,7 @@ static int64_t cpu_cleanup_all(void)
 	struct cpu_thread *cpu;
 	struct cpu_job **jobs;
 
-	jobs = zalloc(sizeof(struct cpu_job *) * cpu_max_pir + 1);
+	jobs = zalloc(sizeof(struct cpu_job *) * (cpu_max_pir + 1));
 	assert(jobs);
 
 	for_each_available_cpu(cpu) {
-- 
2.17.1



More information about the Skiboot mailing list