acpi/pcihp.c: Rewrite acpi_pcihp_get_bsel using object_property_get_int

acpi_pcihp_get_bsel implements functionality of object_property_get_int for
specific property named ACPI_PCIHP_PROP_BSEL, but fails to decrement object's
reference counter properly. Rewriting it using generic object_property_get_int
serves two purposes: reducing code duplication and fixing memory leak.

Signed-off-by: Kirill Batuzov <batuzovk@ispras.ru>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
Kirill Batuzov 2014-04-24 18:15:56 +04:00 committed by Michael S. Tsirkin
parent 9898370497
commit 7c38ecd097
1 changed files with 10 additions and 8 deletions

View File

@ -63,16 +63,18 @@ typedef struct AcpiPciHpFind {
static int acpi_pcihp_get_bsel(PCIBus *bus) static int acpi_pcihp_get_bsel(PCIBus *bus)
{ {
QObject *o = object_property_get_qobject(OBJECT(bus), Error *local_err = NULL;
ACPI_PCIHP_PROP_BSEL, NULL); int64_t bsel = object_property_get_int(OBJECT(bus), ACPI_PCIHP_PROP_BSEL,
int64_t bsel = -1; &local_err);
if (o) {
bsel = qint_get_int(qobject_to_qint(o)); if (local_err || bsel < 0 || bsel >= ACPI_PCIHP_MAX_HOTPLUG_BUS) {
} if (local_err) {
if (bsel < 0) { error_free(local_err);
}
return -1; return -1;
} else {
return bsel;
} }
return bsel;
} }
static void acpi_pcihp_test_hotplug_bus(PCIBus *bus, void *opaque) static void acpi_pcihp_test_hotplug_bus(PCIBus *bus, void *opaque)