From b3a022b17c94196149ec1665584fe81341020a18 Mon Sep 17 00:00:00 2001 From: Xiao Wang Date: Fri, 20 Apr 2018 23:10:50 +0800 Subject: [PATCH] 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 --- lib/librte_eal/linuxapp/eal/eal_vfio.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 */ -- 2.20.1