[dpdk-dev] vfio: fix boundary check in region search
Checks
Commit Message
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
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>
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
@@ -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 */