Message ID | 159707850148.1489912.18355118622296682631.stgit@bahia.lan (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ppc/spapr: Error handling fixes and cleanups | expand |
On Mon, Aug 10, 2020 at 06:55:01PM +0200, Greg Kurz wrote: > Now that all these functions return a negative errno on failure, check > that because it is preferred to local_err. And most of all, propagate it > because vmstate expects negative errnos. > > Signed-off-by: Greg Kurz <groug@kaod.org> Applied to ppc-for-5.2. > --- > hw/intc/spapr_xive_kvm.c | 35 ++++++++++++++++++----------------- > 1 file changed, 18 insertions(+), 17 deletions(-) > > diff --git a/hw/intc/spapr_xive_kvm.c b/hw/intc/spapr_xive_kvm.c > index 1686b036eb2d..005729ebffed 100644 > --- a/hw/intc/spapr_xive_kvm.c > +++ b/hw/intc/spapr_xive_kvm.c > @@ -631,6 +631,7 @@ int kvmppc_xive_post_load(SpaprXive *xive, int version_id) > Error *local_err = NULL; > CPUState *cs; > int i; > + int ret; > > /* The KVM XIVE device should be in use */ > assert(xive->fd != -1); > @@ -641,11 +642,10 @@ int kvmppc_xive_post_load(SpaprXive *xive, int version_id) > continue; > } > > - kvmppc_xive_set_queue_config(xive, SPAPR_XIVE_BLOCK_ID, i, > - &xive->endt[i], &local_err); > - if (local_err) { > - error_report_err(local_err); > - return -1; > + ret = kvmppc_xive_set_queue_config(xive, SPAPR_XIVE_BLOCK_ID, i, > + &xive->endt[i], &local_err); > + if (ret < 0) { > + goto fail; > } > } > > @@ -660,16 +660,14 @@ int kvmppc_xive_post_load(SpaprXive *xive, int version_id) > * previously set in KVM. Since we don't do that for all interrupts > * at reset time anymore, let's do it now. > */ > - kvmppc_xive_source_reset_one(&xive->source, i, &local_err); > - if (local_err) { > - error_report_err(local_err); > - return -1; > + ret = kvmppc_xive_source_reset_one(&xive->source, i, &local_err); > + if (ret < 0) { > + goto fail; > } > > - kvmppc_xive_set_source_config(xive, i, &xive->eat[i], &local_err); > - if (local_err) { > - error_report_err(local_err); > - return -1; > + ret = kvmppc_xive_set_source_config(xive, i, &xive->eat[i], &local_err); > + if (ret < 0) { > + goto fail; > } > } > > @@ -686,15 +684,18 @@ int kvmppc_xive_post_load(SpaprXive *xive, int version_id) > CPU_FOREACH(cs) { > PowerPCCPU *cpu = POWERPC_CPU(cs); > > - kvmppc_xive_cpu_set_state(spapr_cpu_state(cpu)->tctx, &local_err); > - if (local_err) { > - error_report_err(local_err); > - return -1; > + ret = kvmppc_xive_cpu_set_state(spapr_cpu_state(cpu)->tctx, &local_err); > + if (ret < 0) { > + goto fail; > } > } > > /* The source states will be restored when the machine starts running */ > return 0; > + > +fail: > + error_report_err(local_err); > + return ret; > } > > /* Returns MAP_FAILED on error and sets errno */ > >
diff --git a/hw/intc/spapr_xive_kvm.c b/hw/intc/spapr_xive_kvm.c index 1686b036eb2d..005729ebffed 100644 --- a/hw/intc/spapr_xive_kvm.c +++ b/hw/intc/spapr_xive_kvm.c @@ -631,6 +631,7 @@ int kvmppc_xive_post_load(SpaprXive *xive, int version_id) Error *local_err = NULL; CPUState *cs; int i; + int ret; /* The KVM XIVE device should be in use */ assert(xive->fd != -1); @@ -641,11 +642,10 @@ int kvmppc_xive_post_load(SpaprXive *xive, int version_id) continue; } - kvmppc_xive_set_queue_config(xive, SPAPR_XIVE_BLOCK_ID, i, - &xive->endt[i], &local_err); - if (local_err) { - error_report_err(local_err); - return -1; + ret = kvmppc_xive_set_queue_config(xive, SPAPR_XIVE_BLOCK_ID, i, + &xive->endt[i], &local_err); + if (ret < 0) { + goto fail; } } @@ -660,16 +660,14 @@ int kvmppc_xive_post_load(SpaprXive *xive, int version_id) * previously set in KVM. Since we don't do that for all interrupts * at reset time anymore, let's do it now. */ - kvmppc_xive_source_reset_one(&xive->source, i, &local_err); - if (local_err) { - error_report_err(local_err); - return -1; + ret = kvmppc_xive_source_reset_one(&xive->source, i, &local_err); + if (ret < 0) { + goto fail; } - kvmppc_xive_set_source_config(xive, i, &xive->eat[i], &local_err); - if (local_err) { - error_report_err(local_err); - return -1; + ret = kvmppc_xive_set_source_config(xive, i, &xive->eat[i], &local_err); + if (ret < 0) { + goto fail; } } @@ -686,15 +684,18 @@ int kvmppc_xive_post_load(SpaprXive *xive, int version_id) CPU_FOREACH(cs) { PowerPCCPU *cpu = POWERPC_CPU(cs); - kvmppc_xive_cpu_set_state(spapr_cpu_state(cpu)->tctx, &local_err); - if (local_err) { - error_report_err(local_err); - return -1; + ret = kvmppc_xive_cpu_set_state(spapr_cpu_state(cpu)->tctx, &local_err); + if (ret < 0) { + goto fail; } } /* The source states will be restored when the machine starts running */ return 0; + +fail: + error_report_err(local_err); + return ret; } /* Returns MAP_FAILED on error and sets errno */
Now that all these functions return a negative errno on failure, check that because it is preferred to local_err. And most of all, propagate it because vmstate expects negative errnos. Signed-off-by: Greg Kurz <groug@kaod.org> --- hw/intc/spapr_xive_kvm.c | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-)