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 <[email protected]>
---
 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

Reply via email to