iommu/iova: Optimise rbtree searching
[linux-2.6-microblaze.git] / drivers / iommu / iova.c
index 33edfa7..f129ff4 100644 (file)
@@ -342,15 +342,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;