vfio: fix duplicated user mem map
authorYunjian Wang <wangyunjian@huawei.com>
Sat, 10 Apr 2021 09:37:57 +0000 (17:37 +0800)
committerThomas Monjalon <thomas@monjalon.net>
Mon, 19 Apr 2021 09:57:46 +0000 (11:57 +0200)
commit22677b0eef49ec30ef0facadee44b0084fc091ac
tree2aa850f50ef0845cbea167de885da1379cc0fe4b
parent1cd3ce09534e035b3b3cfe0475adee656971fd8c
vfio: fix duplicated user mem map

Currently, new user mem maps are checked if they are adjacent to
an existing mem map and if so, the mem map entries are merged.

It didn't check for duplicate mem maps, so if the API is called
with the same mem map multiple times, they will occupy multiple
mem map entries. This will reduce the amount of entries available
for unique mem maps.

So check for duplicate mem maps and merge them into one mem map
entry if any found.

Fixes: 0cbce3a167f1 ("vfio: skip DMA map failure if already mapped")
Cc: stable@dpdk.org
Suggested-by: Kevin Traynor <ktraynor@redhat.com>
Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
lib/librte_eal/linux/eal_vfio.c