[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH 01/32] spapr_pci: Fix unsafe signed/unsigned compariso
From: |
David Gibson |
Subject: |
[Qemu-ppc] [PATCH 01/32] spapr_pci: Fix unsafe signed/unsigned comparisons |
Date: |
Fri, 1 May 2015 16:41:19 +1000 |
spapr_pci.c contains a number of expressions of the form (uval == -1) or
(uval != -1), where 'uval' is an unsigned value.
This mostly works in practice, because as long as the width of uval is
greater or equal than that of (int), the -1 will be promoted to the
unsigned type, which is the expected outcome.
However, at least for the cases where uval is uint32_t, this would break
on platforms where sizeof(int) > 4 (and a few such do exist), because then
the uint32_t value would be promoted to the larger int type, and never be
equal to -1.
This patch fixes these errors. The fixes for the (uint32_t) cases are
necessary as described above. I've made similar fixes to (uint64_t) and
(hwaddr) cases. Those are strictly theoretical, since I don't know of any
platforms where sizeof(int) > 8, but hey, it's not that hard so we might
as well be strictly C standard compliant.
Reported-by: Markus Armbruster <address@hidden>
Signed-off-by: David Gibson <address@hidden>
Reviewed-by: Markus Armbruster <address@hidden>
Signed-off-by: Alexander Graf <address@hidden>
---
hw/ppc/spapr_pci.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
index 05f4fac..03f6d96 100644
--- a/hw/ppc/spapr_pci.c
+++ b/hw/ppc/spapr_pci.c
@@ -742,12 +742,12 @@ static void spapr_phb_realize(DeviceState *dev, Error
**errp)
PCIBus *bus;
uint64_t msi_window_size = 4096;
- if (sphb->index != -1) {
+ if (sphb->index != (uint32_t)-1) {
hwaddr windows_base;
- if ((sphb->buid != -1) || (sphb->dma_liobn != -1)
- || (sphb->mem_win_addr != -1)
- || (sphb->io_win_addr != -1)) {
+ if ((sphb->buid != (uint64_t)-1) || (sphb->dma_liobn != (uint32_t)-1)
+ || (sphb->mem_win_addr != (hwaddr)-1)
+ || (sphb->io_win_addr != (hwaddr)-1)) {
error_setg(errp, "Either \"index\" or other parameters must"
" be specified for PAPR PHB, not both");
return;
@@ -768,22 +768,22 @@ static void spapr_phb_realize(DeviceState *dev, Error
**errp)
sphb->io_win_addr = windows_base + SPAPR_PCI_IO_WIN_OFF;
}
- if (sphb->buid == -1) {
+ if (sphb->buid == (uint64_t)-1) {
error_setg(errp, "BUID not specified for PHB");
return;
}
- if (sphb->dma_liobn == -1) {
+ if (sphb->dma_liobn == (uint32_t)-1) {
error_setg(errp, "LIOBN not specified for PHB");
return;
}
- if (sphb->mem_win_addr == -1) {
+ if (sphb->mem_win_addr == (hwaddr)-1) {
error_setg(errp, "Memory window address not specified for PHB");
return;
}
- if (sphb->io_win_addr == -1) {
+ if (sphb->io_win_addr == (hwaddr)-1) {
error_setg(errp, "IO window address not specified for PHB");
return;
}
--
2.1.0
- [Qemu-ppc] [PATCH 02/32] spapr_iommu: Disable in-kernel IOMMU tables for >4GB windows, (continued)
- [Qemu-ppc] [PATCH 02/32] spapr_iommu: Disable in-kernel IOMMU tables for >4GB windows, David Gibson, 2015/05/01
- [Qemu-ppc] [PATCH 13/32] pseries: Add pseries-2.4 machine type, David Gibson, 2015/05/01
- [Qemu-ppc] [PATCH 30/32] spapr_pci: emit hotplug add/remove events during hotplug, David Gibson, 2015/05/01
- [Qemu-ppc] [PATCH 28/32] pci: make pci_bar useable outside pci.c, David Gibson, 2015/05/01
- [Qemu-ppc] [PATCH 15/32] hw/ppc/spapr: Use error_report() instead of hw_error(), David Gibson, 2015/05/01
- [Qemu-ppc] [PATCH 10/32] spapr_pci: Rework device-tree rendering, David Gibson, 2015/05/01
- [Qemu-ppc] [PATCH 06/32] spapr_pci: Define default DMA window size as a macro, David Gibson, 2015/05/01
- [Qemu-ppc] [PATCH 32/32] spapr: override default ram size to 512MB, David Gibson, 2015/05/01
- [Qemu-ppc] [PATCH 07/32] spapr_iommu: Add separate trace points for PCI DMA operations, David Gibson, 2015/05/01
- [Qemu-ppc] [PATCH 24/32] spapr_events: event-scan RTAS interface, David Gibson, 2015/05/01
- [Qemu-ppc] [PATCH 01/32] spapr_pci: Fix unsafe signed/unsigned comparisons,
David Gibson <=
- [Qemu-ppc] [PATCH 25/32] spapr_drc: add spapr_drc_populate_dt(), David Gibson, 2015/05/01
- [Qemu-ppc] [PATCH 08/32] spapr_pci: Make find_phb()/find_dev() public, David Gibson, 2015/05/01
- [Qemu-ppc] [PATCH 31/32] machine: add default_ram_size to machine class, David Gibson, 2015/05/01
- [Qemu-ppc] [PATCH 29/32] spapr_pci: enable basic hotplug operations, David Gibson, 2015/05/01
- [Qemu-ppc] [PATCH 22/32] spapr_rtas: add ibm, configure-connector RTAS interface, David Gibson, 2015/05/01
- [Qemu-ppc] [PATCH 23/32] spapr_events: re-use EPOW event infrastructure for hotplug events, David Gibson, 2015/05/01
- [Qemu-ppc] [PATCH 16/32] docs: add sPAPR hotplug/dynamic-reconfiguration documentation, David Gibson, 2015/05/01
- [Qemu-ppc] [PATCH 17/32] spapr_drc: initial implementation of sPAPRDRConnector device, David Gibson, 2015/05/01