Below judgement can only be satisfied at the last time, which produced 2N
judgements(suppose N times failed, 0 or 1 time successed) in vain.

if ((pfn >= iova->pfn_lo) && (pfn <= iova->pfn_hi)) {
        return iova;
}

Signed-off-by: Zhen Lei <thunder.leiz...@huawei.com>
---
 drivers/iommu/iova.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/iommu/iova.c b/drivers/iommu/iova.c
index 8ba8b496..1c49969 100644
--- a/drivers/iommu/iova.c
+++ b/drivers/iommu/iova.c
@@ -312,15 +312,12 @@ private_find_iova(struct iova_domain *iovad, unsigned 
long pfn)
        while (node) {
                struct iova *iova = rb_entry(node, struct iova, node);
 
-               /* If pfn falls within iova's range, return iova */
-               if ((pfn >= iova->pfn_lo) && (pfn <= iova->pfn_hi)) {
-                       return iova;
-               }
-
                if (pfn < iova->pfn_lo)
                        node = node->rb_left;
-               else if (pfn > iova->pfn_lo)
+               else if (pfn > iova->pfn_hi)
                        node = node->rb_right;
+               else
+                       return iova;    /* pfn falls within iova's range */
        }
 
        return NULL;
-- 
2.5.0


_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to