Skip to content
  • Robin Murphy's avatar
    iommu/iova: Sort out rbtree limit_pfn handling · 757c370f
    Robin Murphy authored
    When walking the rbtree, the fact that iovad->start_pfn and limit_pfn
    are both inclusive limits creates an ambiguity once limit_pfn reaches
    the bottom of the address space and they overlap. Commit 5016bdb7
    
    
    ("iommu/iova: Fix underflow bug in __alloc_and_insert_iova_range") fixed
    the worst side-effect of this, that of underflow wraparound leading to
    bogus allocations, but the remaining fallout is that any attempt to
    allocate start_pfn itself erroneously fails.
    
    The cleanest way to resolve the ambiguity is to simply make limit_pfn an
    exclusive limit when inside the guts of the rbtree. Since we're working
    with PFNs, representing one past the top of the address space is always
    possible without fear of overflow, and elsewhere it just makes life a
    little more straightforward.
    
    Reported-by: default avatarAaron Sierra <asierra@xes-inc.com>
    Signed-off-by: default avatarRobin Murphy <robin.murphy@arm.com>
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    757c370f