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: 9711cd0dfc3fa414f7f64935713c07134ae67971
Fixes: 150ab54aa6934583180f88a2bd540bc6fc4fbff3
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
..
2019-08-16 13:31:53 +02:00
2019-08-16 13:31:53 +02:00
2019-11-08 21:32:31 +01:00
2019-08-21 10:42:10 +02:00
2019-06-12 13:20:21 +02:00
2019-08-16 13:31:53 +02:00
2019-06-12 13:20:21 +02:00
2019-08-16 13:31:53 +02:00
2019-08-16 17:21:40 +01:00
2019-10-29 10:28:07 +08:00
2019-08-16 13:31:53 +02:00
2019-10-29 10:28:07 +08:00
2019-08-16 13:31:53 +02:00
2019-08-16 13:31:53 +02:00
2019-08-16 13:31:53 +02:00
2019-08-16 13:31:53 +02:00
2019-08-16 13:31:53 +02:00
2019-08-16 13:31:52 +02:00
2018-03-02 18:44:00 +00:00
2019-08-16 13:31:53 +02:00
2019-08-16 13:31:53 +02:00
2019-08-16 13:31:53 +02:00
2019-08-16 13:31:53 +02:00
2019-08-16 13:31:53 +02:00
2019-08-16 13:31:53 +02:00
2019-10-29 10:28:07 +08:00
2019-10-29 10:28:07 +08:00
2019-10-29 10:28:07 +08:00
2019-06-12 13:20:21 +02:00
2019-08-16 13:31:52 +02:00
2019-08-16 13:31:53 +02:00