X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fbus%2Fpci%2Flinux%2Fpci.c;h=004600f1c9081188d34c40959d461e45894e70b9;hb=42ec78eaeb22fb17fcd5315c8607b80ffd4c64d2;hp=6dda054a7e22d54a28e79c5c549d14671c75729e;hpb=7411d03249161c5205cc81508ab8a5692d9a4a91;p=dpdk.git diff --git a/drivers/bus/pci/linux/pci.c b/drivers/bus/pci/linux/pci.c index 6dda054a7e..004600f1c9 100644 --- a/drivers/bus/pci/linux/pci.c +++ b/drivers/bus/pci/linux/pci.c @@ -33,7 +33,8 @@ extern struct rte_pci_bus rte_pci_bus; static int -pci_get_kernel_driver_by_path(const char *filename, char *dri_name) +pci_get_kernel_driver_by_path(const char *filename, char *dri_name, + size_t len) { int count; char path[PATH_MAX]; @@ -54,7 +55,7 @@ pci_get_kernel_driver_by_path(const char *filename, char *dri_name) name = strrchr(path, '/'); if (name) { - strncpy(dri_name, name + 1, strlen(name + 1) + 1); + strlcpy(dri_name, name + 1, len); return 0; } @@ -117,9 +118,10 @@ rte_pci_unmap_device(struct rte_pci_device *dev) } static int -find_max_end_va(const struct rte_memseg *ms, void *arg) +find_max_end_va(const struct rte_memseg_list *msl, void *arg) { - void *end_va = RTE_PTR_ADD(ms->addr, ms->len); + size_t sz = msl->memseg_arr.len * msl->page_sz; + void *end_va = RTE_PTR_ADD(msl->base_va, sz); void **max_va = arg; if (*max_va < end_va) @@ -132,10 +134,11 @@ pci_find_max_end_va(void) { void *va = NULL; - rte_memseg_walk(find_max_end_va, &va); + rte_memseg_list_walk(find_max_end_va, &va); return va; } + /* parse one line of the "resource" sysfs file (note that the 'line' * string is modified) */ @@ -312,7 +315,7 @@ pci_scan_one(const char *dirname, const struct rte_pci_addr *addr) /* parse driver */ snprintf(filename, sizeof(filename), "%s/driver", dirname); - ret = pci_get_kernel_driver_by_path(filename, driver); + ret = pci_get_kernel_driver_by_path(filename, driver, sizeof(driver)); if (ret < 0) { RTE_LOG(ERR, EAL, "Fail to get kernel driver\n"); free(dev);