[dpdk-dev,v2] vdev: fix name comparison in find_vdev
Checks
Commit Message
Use strcmp to compare device names as the strncmp in original code
causes find_vdev to return -EEXIST for names that are prefix
of another. The creation of interfaces fails unpredictably based
on the order of their creation. An easy way hit this bug is to create
eth_vhost1 after eth_vhost11.
Fixes: dda987315ca2 ("vdev: make virtual bus use its device struct")
Cc: jblunck@infradead.org
Cc: stable@dpdk.org
Signed-off-by: Nachiketa Prachanda <nprachan@vyatta.att-mail.com>
Acked-by: Jianfeng Tan <jianfeng.tan@intel.com>
---
Notes:
V2: No changes
Move Signed-off-by line after Fixes.
drivers/bus/vdev/vdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
12/03/2018 17:54, Nachiketa Prachanda:
> Use strcmp to compare device names as the strncmp in original code
> causes find_vdev to return -EEXIST for names that are prefix
> of another. The creation of interfaces fails unpredictably based
> on the order of their creation. An easy way hit this bug is to create
> eth_vhost1 after eth_vhost11.
>
> Fixes: dda987315ca2 ("vdev: make virtual bus use its device struct")
> Cc: jblunck@infradead.org
> Cc: stable@dpdk.org
>
> Signed-off-by: Nachiketa Prachanda <nprachan@vyatta.att-mail.com>
> Acked-by: Jianfeng Tan <jianfeng.tan@intel.com>
Applied, thanks
@@ -188,7 +188,7 @@ find_vdev(const char *name)
TAILQ_FOREACH(dev, &vdev_device_list, next) {
const char *devname = rte_vdev_device_name(dev);
- if (!strncmp(devname, name, strlen(name)))
+ if (!strcmp(devname, name))
return dev;
}