diff options
author | Cyril Bur <cyril.bur@au1.ibm.com> | 2017-08-03 16:45:51 +1000 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2017-08-15 16:37:14 +1000 |
commit | 8fb78ae989e22b7cad0d516ccf2cb9edf3e7b4a5 (patch) | |
tree | f27cb229741631d6991c7ebdac458252a2de858f /hw/xive.c | |
parent | b3dd496c9422e38d49bc142cd52ad1a04ec20b52 (diff) | |
download | skiboot-8fb78ae989e22b7cad0d516ccf2cb9edf3e7b4a5.zip skiboot-8fb78ae989e22b7cad0d516ccf2cb9edf3e7b4a5.tar.gz skiboot-8fb78ae989e22b7cad0d516ccf2cb9edf3e7b4a5.tar.bz2 |
hw/xive: Fix unchecked return value in opal_xive_dump_emu() (CID 144257)
This is a function to display information, if xive_get_irq_targetting()
fails then the target printed would be the initial value of 0xFF. It
costs nothing to check the return value and print very obviously
question marks.
Fixes: CID 144257
Signed-off-by: Cyril Bur <cyril.bur@au1.ibm.com>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'hw/xive.c')
-rw-r--r-- | hw/xive.c | 13 |
1 files changed, 9 insertions, 4 deletions
@@ -4519,7 +4519,7 @@ static int64_t opal_xive_dump_emu(uint32_t pir) struct cpu_thread *c = find_cpu_by_pir(pir); struct xive_cpu_state *xs; struct xive_eq *eq; - uint32_t ipi_target = -1u; + uint32_t ipi_target; uint8_t *mm, pq; if (!c) @@ -4550,9 +4550,14 @@ static int64_t opal_xive_dump_emu(uint32_t pir) mm = xs->xive->esb_mmio + GIRQ_TO_IDX(xs->ipi_irq) * 0x20000; pq = in_8(mm + 0x10800); - xive_get_irq_targetting(xs->ipi_irq, &ipi_target, NULL, NULL); - prlog(PR_INFO, "CPU[%04x]: IPI #%08x PQ=%x target=%08x\n", - pir, xs->ipi_irq, pq, ipi_target); + if (xive_get_irq_targetting(xs->ipi_irq, &ipi_target, NULL, NULL)) + prlog(PR_INFO, "CPU[%04x]: IPI #%08x PQ=%x target=%08x\n", + pir, xs->ipi_irq, pq, ipi_target); + else + prlog(PR_INFO, "CPU[%04x]: IPI #%08x PQ=%x target=??\n", + pir, xs->ipi_irq, pq); + + __xive_cache_scrub(xs->xive, xive_cache_eqc, xs->eq_blk, xs->eq_idx + XIVE_EMULATION_PRIO, |