[dpdk-stable] [PATCH] vdpa/mlx5: fix PCI address comparison

Matan Azrad matan at mellanox.com
Mon May 4 09:12:09 CEST 2020


A regular memcmp function was used to compare between two objects of
type `struct rte_pci_addr`.

Due to the alignment rules of compiler structure builders, some memory
is not initiated in the structure even though all the fields were
initiated.

Therefore, the comparison may fail even though the PCI addresses are
identical and to cause false failure in probe.

Use the dedicated API to compare 2 PCI addresses.

Fixes: 75dd0ae91765 ("vdpa/mlx5: disable RoCE")
Cc: stable at dpdk.org

Signed-off-by: Matan Azrad <matan at mellanox.com>
Tested-by: Noa Ezra <noae at mellanox.com>
---
 drivers/vdpa/mlx5/mlx5_vdpa.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/vdpa/mlx5/mlx5_vdpa.c b/drivers/vdpa/mlx5/mlx5_vdpa.c
index 9f7353d..1113d6c 100644
--- a/drivers/vdpa/mlx5/mlx5_vdpa.c
+++ b/drivers/vdpa/mlx5/mlx5_vdpa.c
@@ -305,7 +305,7 @@
 		DRV_LOG(DEBUG, "Checking device \"%s\"..", ibv_list[n]->name);
 		if (mlx5_dev_to_pci_addr(ibv_list[n]->ibdev_path, &pci_addr))
 			continue;
-		if (memcmp(addr, &pci_addr, sizeof(pci_addr)))
+		if (rte_pci_addr_cmp(addr, &pci_addr))
 			continue;
 		ibv_match = ibv_list[n];
 		break;
-- 
1.8.3.1



More information about the stable mailing list