From: Xiao Wang Date: Fri, 20 Apr 2018 15:10:50 +0000 (+0800) Subject: vfio: fix boundary check in region search X-Git-Url: http://git.droids-corp.org/?p=dpdk.git;a=commitdiff_plain;h=b3a022b17c94196149ec1665584fe81341020a18 vfio: fix boundary check in region search A previously mapped region is skipped during the search, leading to DMA unmap fails. This patch fixes it and rewords the comment. Fixes: 73a639085938 ("vfio: allow to map other memory regions") Signed-off-by: Xiao Wang Acked-by: Anatoly Burakov --- diff --git a/lib/librte_eal/linuxapp/eal/eal_vfio.c b/lib/librte_eal/linuxapp/eal/eal_vfio.c index cc2030aa7f..95cd343b7f 100644 --- a/lib/librte_eal/linuxapp/eal/eal_vfio.c +++ b/lib/librte_eal/linuxapp/eal/eal_vfio.c @@ -220,15 +220,15 @@ find_user_mem_map(uint64_t addr, uint64_t iova, uint64_t len) /* check start VA */ if (addr < map->addr || addr >= map_va_end) continue; - /* check if IOVA end is within boundaries */ - if (va_end <= map->addr || va_end >= map_va_end) + /* check if VA end is within boundaries */ + if (va_end <= map->addr || va_end > map_va_end) continue; - /* check start PA */ + /* check start IOVA */ if (iova < map->iova || iova >= map_iova_end) continue; /* check if IOVA end is within boundaries */ - if (iova_end <= map->iova || iova_end >= map_iova_end) + if (iova_end <= map->iova || iova_end > map_iova_end) continue; /* we've found our map */