From f9ce8e0aa3fb55ae7a8ea34d3169e73e87feb337 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Thu, 7 May 2015 15:33:38 +1000 Subject: [PATCH] hw/ppc/spapr_iommu: Fix the check for invalid upper bits in liobn The check "liobn & 0xFFFFFFFF00000000ULL" in spapr_tce_find_by_liobn() is completely useless since liobn is only declared as an uint32_t parameter. Fix this by using target_ulong instead (this is what most of the callers of this function are using, too). Signed-off-by: Thomas Huth Signed-off-by: David Gibson Signed-off-by: Alexander Graf --- hw/ppc/spapr_iommu.c | 4 ++-- include/hw/ppc/spapr.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/ppc/spapr_iommu.c b/hw/ppc/spapr_iommu.c index a14cdc4..8cd9dba 100644 --- a/hw/ppc/spapr_iommu.c +++ b/hw/ppc/spapr_iommu.c @@ -41,7 +41,7 @@ enum sPAPRTCEAccess { static QLIST_HEAD(spapr_tce_tables, sPAPRTCETable) spapr_tce_tables; -sPAPRTCETable *spapr_tce_find_by_liobn(uint32_t liobn) +sPAPRTCETable *spapr_tce_find_by_liobn(target_ulong liobn) { sPAPRTCETable *tcet; @@ -52,7 +52,7 @@ sPAPRTCETable *spapr_tce_find_by_liobn(uint32_t liobn) } QLIST_FOREACH(tcet, &spapr_tce_tables, list) { - if (tcet->liobn == liobn) { + if (tcet->liobn == (uint32_t)liobn) { return tcet; } } diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h index 7d9ab9d..317feb6 100644 --- a/include/hw/ppc/spapr.h +++ b/include/hw/ppc/spapr.h @@ -511,7 +511,7 @@ struct sPAPRTCETable { QLIST_ENTRY(sPAPRTCETable) list; }; -sPAPRTCETable *spapr_tce_find_by_liobn(uint32_t liobn); +sPAPRTCETable *spapr_tce_find_by_liobn(target_ulong liobn); void spapr_events_init(sPAPREnvironment *spapr); void spapr_events_fdt_skel(void *fdt, uint32_t epow_irq); int spapr_h_cas_compose_response(target_ulong addr, target_ulong size); -- 2.7.4