From: Jose Marinho Date: Wed, 21 Jun 2017 12:41:04 +0000 (+0100) Subject: sim: Prevent segfault in the wakeCpu m5op if id is invalid X-Git-Tag: v19.0.0.0~2674 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8e8ad9daa3d7b35e0b570361dfce6f2ac1a8d8fe;p=gem5.git sim: Prevent segfault in the wakeCpu m5op if id is invalid Change-Id: I86229cedb206e10326cdee3f09a5c871e49c8d48 Signed-off-by: Andreas Sandberg Reviewed-on: https://gem5-review.googlesource.com/3965 --- diff --git a/src/sim/pseudo_inst.cc b/src/sim/pseudo_inst.cc index 8c2d26b00..778675fd3 100644 --- a/src/sim/pseudo_inst.cc +++ b/src/sim/pseudo_inst.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012, 2015 ARM Limited + * Copyright (c) 2010-2012, 2015, 2017 ARM Limited * All rights reserved * * The license below extends only to copyright in the software and shall @@ -285,6 +285,13 @@ wakeCPU(ThreadContext *tc, uint64_t cpuid) { DPRINTF(PseudoInst, "PseudoInst::wakeCPU(%i)\n", cpuid); System *sys = tc->getSystemPtr(); + + if (sys->numContexts() <= cpuid) { + warn("PseudoInst::wakeCPU(%i), cpuid greater than number of contexts" + "(%i)\n",cpuid, sys->numContexts()); + return; + } + ThreadContext *other_tc = sys->threadContexts[cpuid]; if (other_tc->status() == ThreadContext::Suspended) other_tc->activate();