fs_get_u64_arg() returns -errno on failure, but errno is not reset
before strtoull(), so an unrelated earlier failure is reported. It also
accepts a value with trailing garbage, and base 0 means a leading zero
selects octal.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/failsafe/failsafe_args.c | 20 +-------------------
1 file changed, 1 insertion(+), 19 deletions(-)
diff --git a/drivers/net/failsafe/failsafe_args.c b/drivers/net/failsafe/failsafe_args.c
index 1b8f1d3050..f256a9f6a0 100644
--- a/drivers/net/failsafe/failsafe_args.c
+++ b/drivers/net/failsafe/failsafe_args.c
@@ -345,24 +345,6 @@ fs_remove_sub_devices_definition(char params[DEVARGS_MAXLEN])
return 0;
}
-static int
-fs_get_u64_arg(const char *key __rte_unused,
- const char *value, void *out)
-{
- uint64_t *u64 = out;
- char *endptr = NULL;
-
- if ((value == NULL) || (out == NULL))
- return -EINVAL;
- errno = 0;
- *u64 = strtoull(value, &endptr, 0);
- if (errno != 0)
- return -errno;
- if (endptr == value)
- return -1;
- return 0;
-}
-
static int
fs_get_mac_addr_arg(const char *key __rte_unused,
const char *value, void *out)@@ -416,7 +398,7 @@ failsafe_args_parse(struct rte_eth_dev *dev, const char *params)
if (arg_count == 1) {
ret = rte_kvargs_process(kvlist,
PMD_FAILSAFE_HOTPLUG_POLL_KVARG,
- &fs_get_u64_arg, &failsafe_hotplug_poll);
+ rte_kvargs_handle_u64, &failsafe_hotplug_poll);
if (ret < 0)
goto free_kvlist;
}--
2.53.0