[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL v2 3/6] ppc: Skip partially initialized vCPUs in 'info pic'
From: |
Laurent Vivier |
Subject: |
[PULL v2 3/6] ppc: Skip partially initialized vCPUs in 'info pic' |
Date: |
Mon, 18 Nov 2019 11:53:16 +0100 |
From: Greg Kurz <address@hidden>
CPU_FOREACH() can race with vCPU hotplug/unplug on sPAPR machines, ie.
we may try to print out info about a vCPU with a NULL presenter pointer.
Check that in order to prevent QEMU from crashing.
Signed-off-by: Greg Kurz <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: David Gibson <address@hidden>
Signed-off-by: Laurent Vivier <address@hidden>
---
hw/intc/xics.c | 11 ++++++++++-
hw/intc/xive.c | 11 ++++++++++-
2 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/hw/intc/xics.c b/hw/intc/xics.c
index 5f746079be46..e7ac9ba618fa 100644
--- a/hw/intc/xics.c
+++ b/hw/intc/xics.c
@@ -44,7 +44,16 @@
void icp_pic_print_info(ICPState *icp, Monitor *mon)
{
- int cpu_index = icp->cs ? icp->cs->cpu_index : -1;
+ int cpu_index;
+
+ /* Skip partially initialized vCPUs. This can happen on sPAPR when vCPUs
+ * are hot plugged or unplugged.
+ */
+ if (!icp) {
+ return;
+ }
+
+ cpu_index = icp->cs ? icp->cs->cpu_index : -1;
if (!icp->output) {
return;
diff --git a/hw/intc/xive.c b/hw/intc/xive.c
index 952a461d5329..75dce82fb205 100644
--- a/hw/intc/xive.c
+++ b/hw/intc/xive.c
@@ -523,9 +523,18 @@ static const char * const xive_tctx_ring_names[] = {
void xive_tctx_pic_print_info(XiveTCTX *tctx, Monitor *mon)
{
- int cpu_index = tctx->cs ? tctx->cs->cpu_index : -1;
+ int cpu_index;
int i;
+ /* Skip partially initialized vCPUs. This can happen on sPAPR when vCPUs
+ * are hot plugged or unplugged.
+ */
+ if (!tctx) {
+ return;
+ }
+
+ cpu_index = tctx->cs ? tctx->cs->cpu_index : -1;
+
if (kvm_irqchip_in_kernel()) {
Error *local_err = NULL;
--
2.23.0
- [PULL v2 0/6] ppc-for-4.2 queue 2019-11-15, Laurent Vivier, 2019/11/18
- [PULL v2 1/6] ppc: Add intc_destroy() handlers to SpaprInterruptController/PnvChip, Laurent Vivier, 2019/11/18
- [PULL v2 2/6] xive, xics: Fix reference counting on CPU objects, Laurent Vivier, 2019/11/18
- [PULL v2 3/6] ppc: Skip partially initialized vCPUs in 'info pic',
Laurent Vivier <=
- [PULL v2 4/6] spapr: Add /chosen to FDT only at reset time to preserve kernel and initramdisk, Laurent Vivier, 2019/11/18
- [PULL v2 5/6] spapr/kvm: Set default cpu model for all machine classes, Laurent Vivier, 2019/11/18
- [PULL v2 6/6] mos6522: fix T1 and T2 timers, Laurent Vivier, 2019/11/18
- Re: [PULL v2 0/6] ppc-for-4.2 queue 2019-11-15, Peter Maydell, 2019/11/18