If we want to add some info to errp (by error_prepend() or error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. Otherwise, this info will not be added when errp == &fatal_err (the program will exit prior to the error_append_hint() or error_prepend() call). Fix such cases.
This commit (together with its neighbors) was generated by git grep -l 'error_\(append_hint\|prepend\)(errp' | while read f; do \ spatch --sp-file scripts/coccinelle/fix-error-add-info.cocci \ --in-place $f; done and then ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" (auto-msg was a file with this commit message) and then by hand, for not maintained changed files: git commit -m "<SUB-SYSTEM>: $(< auto-msg)" <FILES> Still, for backporting it may be more comfortable to use only the first command and then do one huge commit. Reported-by: Greg Kurz <gr...@kaod.org> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsement...@virtuozzo.com> --- hw/ppc/mac_newworld.c | 1 + hw/ppc/pnv_lpc.c | 1 + hw/ppc/pnv_occ.c | 1 + hw/ppc/spapr.c | 1 + hw/ppc/spapr_irq.c | 1 + hw/ppc/spapr_pci.c | 1 + target/ppc/kvm.c | 2 ++ 7 files changed, 8 insertions(+) diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index c5bbcc7433..1a37412d31 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -609,6 +609,7 @@ static char *core99_get_via_config(Object *obj, Error **errp) static void core99_set_via_config(Object *obj, const char *value, Error **errp) { + ERRP_AUTO_PROPAGATE(); Core99MachineState *cms = CORE99_MACHINE(obj); if (!strcmp(value, "cuda")) { diff --git a/hw/ppc/pnv_lpc.c b/hw/ppc/pnv_lpc.c index 9466d4a1be..5022afa2a8 100644 --- a/hw/ppc/pnv_lpc.c +++ b/hw/ppc/pnv_lpc.c @@ -681,6 +681,7 @@ static const TypeInfo pnv_lpc_power9_info = { static void pnv_lpc_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PnvLpcController *lpc = PNV_LPC(dev); Object *obj; Error *local_err = NULL; diff --git a/hw/ppc/pnv_occ.c b/hw/ppc/pnv_occ.c index 8bead2c930..735e5655da 100644 --- a/hw/ppc/pnv_occ.c +++ b/hw/ppc/pnv_occ.c @@ -181,6 +181,7 @@ static const TypeInfo pnv_occ_power9_type_info = { static void pnv_occ_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); PnvOCC *occ = PNV_OCC(dev); PnvOCCClass *poc = PNV_OCC_GET_CLASS(occ); Object *obj; diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 08a2a5a770..617afb722c 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -4330,6 +4330,7 @@ int spapr_get_vcpu_id(PowerPCCPU *cpu) void spapr_set_vcpu_id(PowerPCCPU *cpu, int cpu_index, Error **errp) { + ERRP_AUTO_PROPAGATE(); SpaprMachineState *spapr = SPAPR_MACHINE(qdev_get_machine()); MachineState *ms = MACHINE(spapr); int vcpu_id; diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c index 06fe2432ba..679f1306e4 100644 --- a/hw/ppc/spapr_irq.c +++ b/hw/ppc/spapr_irq.c @@ -549,6 +549,7 @@ static int spapr_irq_post_load_dual(SpaprMachineState *spapr, int version_id) static void spapr_irq_reset_dual(SpaprMachineState *spapr, Error **errp) { + ERRP_AUTO_PROPAGATE(); Error *local_err = NULL; /* diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 7b71ad7c74..012ecdd40a 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -1817,6 +1817,7 @@ static void spapr_phb_destroy_msi(gpointer opaque) static void spapr_phb_realize(DeviceState *dev, Error **errp) { + ERRP_AUTO_PROPAGATE(); /* We don't use SPAPR_MACHINE() in order to exit gracefully if the user * tries to add a sPAPR PHB to a non-pseries machine. */ diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c index 8c5b1f25cc..6ea7502cb9 100644 --- a/target/ppc/kvm.c +++ b/target/ppc/kvm.c @@ -237,6 +237,7 @@ static int kvm_booke206_tlb_init(PowerPCCPU *cpu) #if defined(TARGET_PPC64) static void kvm_get_smmu_info(struct kvm_ppc_smmu_info *info, Error **errp) { + ERRP_AUTO_PROPAGATE(); int ret; assert(kvm_state != NULL); @@ -2073,6 +2074,7 @@ int kvmppc_set_smt_threads(int smt) void kvmppc_hint_smt_possible(Error **errp) { + ERRP_AUTO_PROPAGATE(); int i; GString *g; char *s; -- 2.21.0