[dpdk-dev] vfio: fix boundary check in region search

Message ID 20180420151050.36507-1-xiao.w.wang@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Xiao Wang April 20, 2018, 3:10 p.m. UTC
  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 <xiao.w.wang@intel.com>
---
 lib/librte_eal/linuxapp/eal/eal_vfio.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
  

Comments

Anatoly Burakov April 20, 2018, 3:23 p.m. UTC | #1
On 20-Apr-18 4:10 PM, Xiao Wang wrote:
> 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 <xiao.w.wang@intel.com>
> ---

<insert Homer Simpson "D'oh!" pic here>

Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
  
Thomas Monjalon April 23, 2018, 7:26 p.m. UTC | #2
20/04/2018 17:23, Burakov, Anatoly:
> On 20-Apr-18 4:10 PM, Xiao Wang wrote:
> > 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 <xiao.w.wang@intel.com>
> > ---
> 
> <insert Homer Simpson "D'oh!" pic here>

                       _ ,___,-'",-=-. 
           __,-- _ _,-'_)_  (""`'-._\ `. 
        _,'  __ |,' ,-' __)  ,-     /. | 
      ,'_,--'   |     -'  _)/         `\ 
    ,','      ,'       ,-'_,`           : 
    ,'     ,-'       ,(,-(              : 
         ,'       ,-' ,    _            ; 
        /        ,-._/`---'            / 
       /        (____)(----. )       ,' 
      /         (      `.__,     /\ /, 
     :           ;-.___         /__\/| 
     |         ,'      `--.      -,\ | 
     :        /            \    .__/ 
      \      (__            \    |_ 
       \       ,`-, *       /   _|,\ 
        \    ,'   `-.     ,'_,-'    \ 
       (_\,-'    ,'\")--,'-'       __\ 
        \       /  // ,'|      ,--'  `-. 
         `-.    `-/ \'  |   _,'         `. 
            `-._ /      `--'/             \ 
    -hrr-      ,'           |              \ 
              /             |               \ 
           ,-'              |               / 
          /                 |             -' 



> Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>

Applied, thanks
  

Patch

diff --git a/lib/librte_eal/linuxapp/eal/eal_vfio.c b/lib/librte_eal/linuxapp/eal/eal_vfio.c
index 7cf3f0285..7afa33d3a 100644
--- a/lib/librte_eal/linuxapp/eal/eal_vfio.c
+++ b/lib/librte_eal/linuxapp/eal/eal_vfio.c
@@ -230,15 +230,15 @@  find_user_mem_map(struct user_mem_maps *user_mem_maps, uint64_t addr,
 		/* 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 */