This is unacceptable behavior.
Fixes:
a0194d828100 ("net/failsafe: add flexible device definition")
Fixes:
35ffe4208140 ("net/failsafe: fix missing pclose after popen")
Cc: stable@dpdk.org
Reported-by: Matan Azrad <matan@mellanox.com>
Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
/* store possible newline as well */
char output[DEVARGS_MAXLEN + 1];
size_t len;
/* store possible newline as well */
char output[DEVARGS_MAXLEN + 1];
size_t len;
- int old_err;
- int ret, pclose_ret;
RTE_ASSERT(cmdline != NULL || sdev->cmdline != NULL);
if (sdev->cmdline == NULL) {
RTE_ASSERT(cmdline != NULL || sdev->cmdline != NULL);
if (sdev->cmdline == NULL) {
sdev->cmdline[i] = ' ';
}
DEBUG("'%s'", sdev->cmdline);
sdev->cmdline[i] = ' ';
}
DEBUG("'%s'", sdev->cmdline);
fp = popen(sdev->cmdline, "r");
if (fp == NULL) {
fp = popen(sdev->cmdline, "r");
if (fp == NULL) {
ERROR("popen: %s", strerror(errno));
ERROR("popen: %s", strerror(errno));
return ret;
}
/* We only read one line */
return ret;
}
/* We only read one line */
goto ret_pclose;
}
ret = fs_parse_device(sdev, output);
goto ret_pclose;
}
ret = fs_parse_device(sdev, output);
ERROR("Parsing device '%s' failed", output);
ERROR("Parsing device '%s' failed", output);
- pclose_ret = pclose(fp);
- if (pclose_ret) {
- pclose_ret = errno;
ERROR("pclose: %s", strerror(errno));
ERROR("pclose: %s", strerror(errno));
- errno = old_err;
- return pclose_ret;
- }