strict_strtoul as used in parse_gw_bandwidth is defined for unsigned
long and strict_strtol should be used instead for long.

Signed-off-by: Sven Eckelmann <s...@narfation.org>
---
Added compat.h helper function

 compat.h         |   10 ++++++++++
 gateway_common.c |    4 ++--
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/compat.h b/compat.h
index 0f0e66e..66a8adc 100644
--- a/compat.h
+++ b/compat.h
@@ -104,6 +104,16 @@ static inline int skb_cow_head(struct sk_buff *skb, 
unsigned int headroom)
        ret; \
 })
 
+#define strict_strtol(cp, base, res) \
+       ({ \
+       int ret = 0; \
+       char *endp; \
+       *res = simple_strtol(cp, &endp, base); \
+       if (cp == endp) \
+               ret = -EINVAL; \
+       ret; \
+})
+
 #define to_battr(a) container_of(a, struct bat_attribute, attr)
 
 ssize_t bat_wrapper_show(struct kobject *kobj, struct attribute *attr,
diff --git a/gateway_common.c b/gateway_common.c
index ed3bd36..e74307b 100644
--- a/gateway_common.c
+++ b/gateway_common.c
@@ -97,7 +97,7 @@ static bool parse_gw_bandwidth(struct net_device *net_dev, 
char *buff,
                        *tmp_ptr = '\0';
        }
 
-       ret = strict_strtoul(buff, 10, &ldown);
+       ret = strict_strtol(buff, 10, &ldown);
        if (ret) {
                bat_err(net_dev,
                        "Download speed of gateway mode invalid: %s\n",
@@ -122,7 +122,7 @@ static bool parse_gw_bandwidth(struct net_device *net_dev, 
char *buff,
                                *tmp_ptr = '\0';
                }
 
-               ret = strict_strtoul(slash_ptr + 1, 10, &lup);
+               ret = strict_strtol(slash_ptr + 1, 10, &lup);
                if (ret) {
                        bat_err(net_dev,
                                "Upload speed of gateway mode invalid: "
-- 
1.7.5.3

Reply via email to