vfio: fix secondary process start
When binding with vfio-pci, secondary process cannot be started with an error message: cannot find TAILQ entry for PCI device. It's due to: struct rte_pci_addr is padded with 1 byte for alignment by compiler. Then below comparison in commit 2f4adfad0a69 ("vfio: add multiprocess support") will fail if the last byte is not initialized. memcmp(&vfio_res->pci_addr, &dev->addr, sizeof(dev->addr) And commit cdc242f260e7 ("eal/linux: support running as unprivileged user") just triggers this bug by using a stack un-initialized variable. The fix is to use rte_eal_compare_pci_addr() for pci addr comparison. Fixes: 2f4adfad0a69 ("vfio: add multiprocess support") Fixes: cdc242f260e7 ("eal/linux: support running as unprivileged user") Cc: stable@dpdk.org Reported-by: Pawel Rutkowski <pawelx.rutkowski@intel.com> Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com> Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
This commit is contained in:
parent
9fa5993f10
commit
dd18a2f0b2
@ -359,7 +359,8 @@ pci_vfio_map_resource(struct rte_pci_device *dev)
|
||||
} else {
|
||||
/* if we're in a secondary process, just find our tailq entry */
|
||||
TAILQ_FOREACH(vfio_res, vfio_res_list, next) {
|
||||
if (memcmp(&vfio_res->pci_addr, &dev->addr, sizeof(dev->addr)))
|
||||
if (rte_eal_compare_pci_addr(&vfio_res->pci_addr,
|
||||
&dev->addr))
|
||||
continue;
|
||||
break;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user