[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 1/9] xilinx: Fix latent error handling bug
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PULL 1/9] xilinx: Fix latent error handling bug |
Date: |
Thu, 13 Jul 2017 15:27:48 +0200 |
From: Eduardo Habkost <address@hidden>
Assigning directly to *errp is not valid, as errp may be null,
&error_fatal, or &error_abort. The !*errp conditional protects
against the latter two, but we then leak @local_err. Fortunately,
the qdev core always passes pointer to null, so this is "merely" a
latent bug.
Use error_propagate() instead.
Cc: "Edgar E. Iglesias" <address@hidden>
Cc: Alistair Francis <address@hidden>
Cc: Jason Wang <address@hidden>
Cc: address@hidden
Signed-off-by: Eduardo Habkost <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Alistair Francis <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Markus Armbruster <address@hidden>
[Commit message clarified]
Signed-off-by: Markus Armbruster <address@hidden>
---
hw/dma/xilinx_axidma.c | 4 +---
hw/net/xilinx_axienet.c | 4 +---
2 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c
index 6065689..3987b5f 100644
--- a/hw/dma/xilinx_axidma.c
+++ b/hw/dma/xilinx_axidma.c
@@ -554,9 +554,7 @@ static void xilinx_axidma_realize(DeviceState *dev, Error
**errp)
return;
xilinx_axidma_realize_fail:
- if (!*errp) {
- *errp = local_err;
- }
+ error_propagate(errp, local_err);
}
static void xilinx_axidma_init(Object *obj)
diff --git a/hw/net/xilinx_axienet.c b/hw/net/xilinx_axienet.c
index b670184..5ffa739 100644
--- a/hw/net/xilinx_axienet.c
+++ b/hw/net/xilinx_axienet.c
@@ -981,9 +981,7 @@ static void xilinx_enet_realize(DeviceState *dev, Error
**errp)
return;
xilinx_enet_realize_fail:
- if (!*errp) {
- *errp = local_err;
- }
+ error_propagate(errp, local_err);
}
static void xilinx_enet_init(Object *obj)
--
2.7.5
- [Qemu-devel] [PULL 0/9] Error reporting patches for 2017-07-13, Markus Armbruster, 2017/07/13
- [Qemu-devel] [PULL 4/9] util/qemu-error: Rename error_print_loc() to be more generic, Markus Armbruster, 2017/07/13
- [Qemu-devel] [PULL 7/9] char-socket: Report TCP socket waiting as information, Markus Armbruster, 2017/07/13
- [Qemu-devel] [PULL 8/9] error: Implement the warn and free Error functions, Markus Armbruster, 2017/07/13
- [Qemu-devel] [PULL 3/9] websock: Don't try to set *errp directly, Markus Armbruster, 2017/07/13
- [Qemu-devel] [PULL 5/9] error: Functions to report warnings and informational messages, Markus Armbruster, 2017/07/13
- [Qemu-devel] [PULL 2/9] block: Don't try to set *errp directly, Markus Armbruster, 2017/07/13
- [Qemu-devel] [PULL 9/9] Convert error_report*_err() to warn_report*_err(), Markus Armbruster, 2017/07/13
- [Qemu-devel] [PULL 1/9] xilinx: Fix latent error handling bug,
Markus Armbruster <=
- [Qemu-devel] [PULL 6/9] Convert error_report() to warn_report(), Markus Armbruster, 2017/07/13
- Re: [Qemu-devel] [PULL 6/9] Convert error_report() to warn_report(), Kevin Wolf, 2017/07/17
- Re: [Qemu-devel] [PULL 6/9] Convert error_report() to warn_report(), Markus Armbruster, 2017/07/18
- Re: [Qemu-devel] [PULL 6/9] Convert error_report() to warn_report(), Markus Armbruster, 2017/07/24
- Re: [Qemu-devel] [PULL 6/9] Convert error_report() to warn_report(), Paolo Bonzini, 2017/07/24
- [Qemu-devel] Slow tests on "make check" (was Re: [PULL 6/9] Convert error_report() to warn_report()), Eduardo Habkost, 2017/07/25
- Re: [Qemu-devel] Slow tests on "make check" (was Re: [PULL 6/9] Convert error_report() to warn_report()), Alistair Francis, 2017/07/25
- Re: [Qemu-devel] Slow tests on "make check" (was Re: [PULL 6/9] Convert error_report() to warn_report()), Alistair Francis, 2017/07/25
- Re: [Qemu-devel] Slow tests on "make check" (was Re: [PULL 6/9] Convert error_report() to warn_report()), Richard W.M. Jones, 2017/07/26
- Re: [Qemu-devel] Slow tests on "make check" (was Re: [PULL 6/9] Convert error_report() to warn_report()), Daniel P. Berrange, 2017/07/26