qemu-e2k/hw/net
Markus Armbruster 5a0948d36c net/virtio: Fix failover error handling crash bugs
Functions that take an Error ** parameter to pass an error to the
caller expect the parameter to point to null.
failover_replug_primary() violates this precondition in several
places:

* After qemu_opts_from_qdict() failed, *errp is no longer null.
  Passing it to error_setg() is wrong, and will trip the assertion in
  error_setv().  Messed up in commit 150ab54aa6 "net/virtio: fix
  re-plugging of primary device".  Simply drop the error_setg().

* Passing @errp to qemu_opt_set_bool(), hotplug_handler_pre_plug(),
  and hotplug_handler_plug() is wrong.  If one of the first two fails,
  *errp is no longer null.  Risks tripping the same assertion.
  Moreover, continuing after such errors is unsafe.  Messed up in
  commit 9711cd0dfc "net/virtio: add failover support".  Fix by
  handling each error properly.

failover_replug_primary() crashes when passed a null @errp.  Also
messed up in commit 9711cd0dfc.  This bug can't bite as no caller
actually passes null.  Fix it anyway.

Fixes: 9711cd0dfc
Fixes: 150ab54aa6
Cc: Jens Freimann <jfreimann@redhat.com>
Cc: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20191130194240.10517-3-armbru@redhat.com>
Reviewed-by: Jens Freimann <jfreimann@redhat.com>
2019-12-02 16:14:38 +01:00
..
can Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
fsl_etsec hw/net/fsl_etsec/etsec.c: Switch to transaction-based ptimer API 2019-10-24 17:16:28 +01:00
rocker Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
allwinner_emac.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
cadence_gem.c net/cadence_gem: Set PHY autonegotiation restart status 2019-11-19 13:20:27 +00:00
dp8393x.c dp8393x: fix dp8393x_receive() 2019-11-08 21:32:31 +01:00
e1000_regs.h
e1000.c hw/net/e1000: Fix erroneous comment 2019-08-21 10:42:10 +02:00
e1000e_core.c sysemu: Split sysemu/runstate.h off sysemu/sysemu.h 2019-08-16 13:37:36 +02:00
e1000e_core.h Supply missing header guards 2019-06-12 13:20:21 +02:00
e1000e.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
e1000x_common.c Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
e1000x_common.h Supply missing header guards 2019-06-12 13:20:21 +02:00
eepro100.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
etraxfs_eth.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
ftgmac100.c aspeed: add support for the Aspeed MII controller of the AST2600 2019-10-15 18:09:05 +01:00
imx_fec.c target-arm queue: 2019-08-16 17:21:40 +01:00
Kconfig net: add tulip (dec21143) driver 2019-10-29 10:28:07 +08:00
lan9118.c hw/net/lan9118.c: Switch to transaction-based ptimer API 2019-10-15 18:09:03 +01:00
lance.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
Makefile.objs net: add tulip (dec21143) driver 2019-10-29 10:28:07 +08:00
mcf_fec.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
milkymist-minimac2.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
mipsnet.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
ne2000-isa.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
ne2000-pci.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
ne2000.c Clean up inclusion of sysemu/sysemu.h 2019-08-16 13:31:53 +02:00
ne2000.h Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
net_rx_pkt.c
net_rx_pkt.h net_pkt: Extend packet abstraction as required by e1000e functionality 2016-06-02 10:42:28 +08:00
net_tx_pkt.c net: fix misaligned member access 2018-03-02 18:44:00 +00:00
net_tx_pkt.h
opencores_eth.c Clean up inclusion of sysemu/sysemu.h 2019-08-16 13:31:53 +02:00
pcnet-pci.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
pcnet.c Clean up inclusion of sysemu/sysemu.h 2019-08-16 13:31:53 +02:00
pcnet.h memory: Fix type of IOMMUMemoryRegionClass member @parent_class 2019-08-16 13:31:51 +02:00
rtl8139.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
smc91c111.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
spapr_llan.c spapr: Replace spapr_vio_qirq() helper with spapr_vio_irq_pulse() helper 2019-10-04 19:08:22 +10:00
stellaris_enet.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
sungem.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
sunhme.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
trace-events net: add tulip (dec21143) driver 2019-10-29 10:28:07 +08:00
tulip.c net: add tulip (dec21143) driver 2019-10-29 10:28:07 +08:00
tulip.h net: add tulip (dec21143) driver 2019-10-29 10:28:07 +08:00
vhost_net-stub.c vhost-net: move stubs to a separate file 2019-02-21 12:28:01 -05:00
vhost_net.c vhost_net: enable packed ring support 2019-10-25 07:46:22 -04:00
virtio-net.c net/virtio: Fix failover error handling crash bugs 2019-12-02 16:14:38 +01:00
vmware_utils.h
vmxnet3_defs.h Supply missing header guards 2019-06-12 13:20:21 +02:00
vmxnet3.c hw/net/vmxnet3: Fix leftover unregister_savevm 2019-09-12 11:13:55 +01:00
vmxnet3.h
vmxnet_debug.h
xen_nic.c Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
xgmac.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
xilinx_axienet.c hw/net/xilinx_axi: Use object_initialize_child for correct ref. counting 2019-09-03 16:20:34 +01:00
xilinx_ethlite.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00