[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 for-2.7 12/20] s390x/pci: fix reg_irqs()
From: |
Cornelia Huck |
Subject: |
[Qemu-devel] [PATCH v2 for-2.7 12/20] s390x/pci: fix reg_irqs() |
Date: |
Wed, 11 May 2016 16:58:04 +0200 |
From: Yi Min Zhao <address@hidden>
In reg_irqs(), present code assumes that map_indicator() always issues
successfully. Let's check it and return the error to caller in order to
inform guest.
Signed-off-by: Yi Min Zhao <address@hidden>
Reviewed-by: Cornelia Huck <address@hidden>
Reviewed-by: Pierre Morel <address@hidden>
Reviewed-by: Dong Jia Shi <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>
---
hw/s390x/s390-pci-inst.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c
index b28e7d1..90d9fda 100644
--- a/hw/s390x/s390-pci-inst.c
+++ b/hw/s390x/s390-pci-inst.c
@@ -634,8 +634,15 @@ static int reg_irqs(CPUS390XState *env, S390PCIBusDevice
*pbdev, ZpciFib fib)
len = BITS_TO_LONGS(FIB_DATA_NOI(ldl_p(&fib.data))) * sizeof(unsigned
long);
pbdev->indicator = get_indicator(ldq_p(&fib.aibv), len);
- map_indicator(&pbdev->routes.adapter, pbdev->summary_ind);
- map_indicator(&pbdev->routes.adapter, pbdev->indicator);
+ ret = map_indicator(&pbdev->routes.adapter, pbdev->summary_ind);
+ if (ret) {
+ goto out;
+ }
+
+ ret = map_indicator(&pbdev->routes.adapter, pbdev->indicator);
+ if (ret) {
+ goto out;
+ }
pbdev->routes.adapter.summary_addr = ldq_p(&fib.aisb);
pbdev->routes.adapter.summary_offset = FIB_DATA_AISBO(ldl_p(&fib.data));
@@ -647,6 +654,12 @@ static int reg_irqs(CPUS390XState *env, S390PCIBusDevice
*pbdev, ZpciFib fib)
DPRINTF("reg_irqs adapter id %d\n", pbdev->routes.adapter.adapter_id);
return 0;
+out:
+ release_indicator(&pbdev->routes.adapter, pbdev->summary_ind);
+ release_indicator(&pbdev->routes.adapter, pbdev->indicator);
+ pbdev->summary_ind = NULL;
+ pbdev->indicator = NULL;
+ return ret;
}
static int dereg_irqs(S390PCIBusDevice *pbdev)
--
2.6.6
- [Qemu-devel] [PATCH v2 for-2.7 00/20] First batch of s390x patches, Cornelia Huck, 2016/05/11
- [Qemu-devel] [PATCH v2 for-2.7 02/20] s390x: enable runtime instrumentation, Cornelia Huck, 2016/05/11
- [Qemu-devel] [PATCH v2 for-2.7 07/20] pc-bios/s390-ccw: Get device address via diag 308/6, Cornelia Huck, 2016/05/11
- [Qemu-devel] [PATCH v2 for-2.7 05/20] s390x/ipl: Provide ipl parameter block, Cornelia Huck, 2016/05/11
- [Qemu-devel] [PATCH v2 for-2.7 01/20] s390x: add compat machine for 2.7, Cornelia Huck, 2016/05/11
- [Qemu-devel] [PATCH v2 for-2.7 12/20] s390x/pci: fix reg_irqs(),
Cornelia Huck <=
- [Qemu-devel] [PATCH v2 for-2.7 18/20] s390x/pci: enhance mpcifc_service_call, Cornelia Huck, 2016/05/11
- [Qemu-devel] [PATCH v2 for-2.7 04/20] s390x/ipl: Add type and length checks for IplParameterBlock values, Cornelia Huck, 2016/05/11
- [Qemu-devel] [PATCH v2 for-2.7 16/20] s390x/pci: introduce S390PCIBusDevice.iommu_enabled, Cornelia Huck, 2016/05/11
- [Qemu-devel] [PATCH v2 for-2.7 13/20] s390x/pci: separate s390_sclp_configure function, Cornelia Huck, 2016/05/11
- [Qemu-devel] [PATCH v2 for-2.7 15/20] s390x/pci: export pci_dereg_ioat and pci_dereg_irqs, Cornelia Huck, 2016/05/11
- [Qemu-devel] [PATCH v2 for-2.7 03/20] s390x/ipl: Extend the IplParameterBlock struct, Cornelia Huck, 2016/05/11
- [Qemu-devel] [PATCH v2 for-2.7 06/20] s390x/ipl: Add ssid field to IplParameterBlock, Cornelia Huck, 2016/05/11
- [Qemu-devel] [PATCH v2 for-2.7 11/20] hw/char: QOM'ify sclpconsole.c, Cornelia Huck, 2016/05/11
- [Qemu-devel] [PATCH v2 for-2.7 20/20] s390x/pci: remove whitespace, Cornelia Huck, 2016/05/11
- [Qemu-devel] [PATCH v2 for-2.7 17/20] s390x/pci: fix s390_pci_sclp_deconfigure, Cornelia Huck, 2016/05/11