hw/ppc/spapr: Fix crash when specifying bad parameters to spapr-pci-host-bridge
authorThomas Huth <thuth@redhat.com>
Thu, 21 Apr 2016 10:08:58 +0000 (12:08 +0200)
committerDavid Gibson <david@gibson.dropbear.id.au>
Sat, 23 Apr 2016 06:52:20 +0000 (16:52 +1000)
commitda34fed707a3a3ffa229f4e724aea06da1b53fb0
treee9e930f53c129f93eddec95deb789b8f9b3d8e4d
parent53343338a6e7b83777b82803398572b40afc8c0f
hw/ppc/spapr: Fix crash when specifying bad parameters to spapr-pci-host-bridge

QEMU currently crashes when using bad parameters for the
spapr-pci-host-bridge device:

$ qemu-system-ppc64 -device spapr-pci-host-bridge,buid=0x123,liobn=0x321,mem_win_addr=0x1,io_win_addr=0x10
Segmentation fault

The problem is that spapr_tce_find_by_liobn() might return NULL, but
the code in spapr_populate_pci_dt() does not check for this condition
and then tries to dereference this NULL pointer.
Apart from that, the return value of spapr_populate_pci_dt() also
has to be checked for all PCI buses, not only for the last one, to
make sure we catch all errors.

Signed-off-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
hw/ppc/spapr.c
hw/ppc/spapr_pci.c