vfio: fix DMA mapping with default container
authorAnatoly Burakov <anatoly.burakov@intel.com>
Mon, 4 Nov 2019 17:41:33 +0000 (17:41 +0000)
committerDavid Marchand <david.marchand@redhat.com>
Thu, 7 Nov 2019 16:46:43 +0000 (17:46 +0100)
When requesting DMA mapping to default container, we are meant to
supply the RTE_VFIO_DEFAULT_CONTAINER_FD value, however this is
not handled correctly by get_vfio_cfg_by_container_fd(), because
it only looks at actual fd values and does not check for this
special case.

Fix it to return default container if the fd requested is the
special RTE_VFIO_DEFAULT_CONTAINER_FD value.

Fixes: 4106d89a18f8 ("vfio: allow DMA map to the default container")
Cc: stable@dpdk.org
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
lib/librte_eal/linux/eal/eal_vfio.c

index d9541b1..d788738 100644 (file)
@@ -412,6 +412,9 @@ get_vfio_cfg_by_container_fd(int container_fd)
 {
        int i;
 
+       if (container_fd == RTE_VFIO_DEFAULT_CONTAINER_FD)
+               return default_vfio_cfg;
+
        for (i = 0; i < VFIO_MAX_CONTAINERS; i++) {
                if (vfio_cfgs[i].vfio_container_fd == container_fd)
                        return &vfio_cfgs[i];