Length of hardware IDs list is limited by REGSTR_VAL_MAX_HCID_LEN [1], which is currently 1024. With the old limit of 260, obtaining the list could fail in a rare occasion of a very long result (no examples known). This also removes a bogus dependency on the maximum path length.
[1]: https://docs.microsoft.com/en-us/windows-hardware/drivers/install/hardware-ids Fixes: b762221ac24f ("bus/pci: support Windows with bifurcated drivers") Cc: sta...@dpdk.org Cc: Tal Shnaiderman <tal...@nvidia.com> Signed-off-by: Dmitry Kozlyuk <dmitry.kozl...@gmail.com> --- v2: change limit and description (self-fix) drivers/bus/pci/windows/pci.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/bus/pci/windows/pci.c b/drivers/bus/pci/windows/pci.c index 33a5fb1d8..fbf0785fd 100644 --- a/drivers/bus/pci/windows/pci.c +++ b/drivers/bus/pci/windows/pci.c @@ -10,6 +10,7 @@ #include "pci_netuio.h" #include <devpkey.h> +#include <regstr.h> #if defined RTE_TOOLCHAIN_GCC && (__MINGW64_VERSION_MAJOR < 8) #include <devpropdef.h> @@ -303,7 +304,7 @@ pci_scan_one(HDEVINFO dev_info, PSP_DEVINFO_DATA device_info_data) { struct rte_pci_device *dev; int ret = -1; - char pci_device_info[PATH_MAX]; + char pci_device_info[REGSTR_VAL_MAX_HCID_LEN]; struct rte_pci_addr addr; struct rte_pci_id pci_id; @@ -314,7 +315,7 @@ pci_scan_one(HDEVINFO dev_info, PSP_DEVINFO_DATA device_info_data) memset(dev, 0, sizeof(*dev)); ret = get_pci_hardware_id(dev_info, device_info_data, - pci_device_info, PATH_MAX); + pci_device_info, sizeof(pci_device_info)); if (ret != 0) goto end; -- 2.29.2