common/mlx5: fix extraction of auxiliary network device name
Checks
Commit Message
The PMD reads auxiliary network device name from the Linux SYSFS.
The current implementation closed directory context before it copied
a file name from that directory into internal buffer.
The patch closes SYSFS directory after file name was copied.
Fixes: 777b72a9339c ("common/mlx5: support auxiliary bus")
Cc: stable@dpdk.org
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
---
drivers/common/mlx5/linux/mlx5_common_auxiliary.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
Comments
15/06/2025 09:41, Gregory Etelson:
> The PMD reads auxiliary network device name from the Linux SYSFS.
>
> The current implementation closed directory context before it copied
> a file name from that directory into internal buffer.
>
> The patch closes SYSFS directory after file name was copied.
>
> Fixes: 777b72a9339c ("common/mlx5: support auxiliary bus")
> Cc: stable@dpdk.org
>
> Signed-off-by: Gregory Etelson <getelson@nvidia.com>
> Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
It was working by chance before this fix.
Applied, thanks.
@@ -26,8 +26,8 @@ mlx5_auxiliary_get_child_name(const char *dev, const char *node,
{
DIR *dir;
struct dirent *dent;
- MKSTR(path, "%s/%s%s", AUXILIARY_SYSFS_PATH, dev, node);
+ MKSTR(path, "%s/%s%s", AUXILIARY_SYSFS_PATH, dev, node);
dir = opendir(path);
if (dir == NULL) {
rte_errno = errno;
@@ -38,14 +38,17 @@ mlx5_auxiliary_get_child_name(const char *dev, const char *node,
if (dent->d_name[0] != '.')
break;
}
- closedir(dir);
if (dent == NULL) {
rte_errno = ENOENT;
- return -rte_errno;
+ goto end;
}
if (rte_strscpy(child, dent->d_name, size) < 0)
- return -rte_errno;
- return 0;
+ goto end;
+ rte_errno = 0;
+
+end:
+ closedir(dir);
+ return -rte_errno;
}
static int