hw/ipmi: Fix realize() error API violations
commitf6166a4da59bdd57b3af8b1c742ce611d6c3d3aa
authorMarkus Armbruster <armbru@redhat.com>
Wed, 4 Dec 2019 09:36:15 +0000 (4 10:36 +0100)
committerMarkus Armbruster <armbru@redhat.com>
Wed, 18 Dec 2019 07:36:15 +0000 (18 08:36 +0100)
treeb3b099cd5fe728caf2223fd965873a51ffa22ade
parentbc0e339b01b330c55532571ae6fce89b0f8a4a96
hw/ipmi: Fix realize() error API violations

isa_ipmi_bt_realize(), ipmi_isa_realize(), pci_ipmi_bt_realize(), and
pci_ipmi_kcs_realize() dereference @errp when IPMIInterfaceClass
method init() fails.  That's wrong; see the big comment in error.h.
Introduced in commit 0719029c47 "ipmi: Add an ISA KCS low-level
interface", then imitated in commit a9b74079cb "ipmi: Add a BT
low-level interface" and commit 12f983c6aa "ipmi: Add PCI IPMI
interfaces".

No caller actually passes null.

Fix anyway: splice in a local Error *err, and error_propagate().

Cc: Corey Minyard <cminyard@mvista.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20191204093625.14836-9-armbru@redhat.com>
hw/ipmi/isa_ipmi_bt.c
hw/ipmi/isa_ipmi_kcs.c
hw/ipmi/pci_ipmi_bt.c
hw/ipmi/pci_ipmi_kcs.c