]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
netconsole: use netpoll_parse_ip_addr in local_ip_store
authorBreno Leitao <leitao@debian.org>
Mon, 11 Aug 2025 18:13:27 +0000 (11:13 -0700)
committerJakub Kicinski <kuba@kernel.org>
Wed, 13 Aug 2025 00:32:42 +0000 (17:32 -0700)
Replace manual IP address parsing with a call to netpoll_parse_ip_addr
in local_ip_store(), simplifying the code and reducing the chance of
errors.

Also, remove the pr_err() if the user enters an invalid value in
configfs entries. pr_err() is not the best way to alert user that the
configuration is invalid.

Signed-off-by: Breno Leitao <leitao@debian.org>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/netconsole.c

index 2919522d963e2361432f6bf0be3799194feaa4b3..a9b30b5891d78ff7e4198c41fe59b62336536ae9 100644 (file)
@@ -757,6 +757,7 @@ static ssize_t local_ip_store(struct config_item *item, const char *buf,
 {
        struct netconsole_target *nt = to_target(item);
        ssize_t ret = -EINVAL;
+       int ipv6;
 
        mutex_lock(&dynamic_netconsole_mutex);
        if (nt->enabled) {
@@ -765,23 +766,10 @@ static ssize_t local_ip_store(struct config_item *item, const char *buf,
                goto out_unlock;
        }
 
-       if (strnchr(buf, count, ':')) {
-               const char *end;
-
-               if (in6_pton(buf, count, nt->np.local_ip.in6.s6_addr, -1, &end) > 0) {
-                       if (*end && *end != '\n') {
-                               pr_err("invalid IPv6 address at: <%c>\n", *end);
-                               goto out_unlock;
-                       }
-                       nt->np.ipv6 = true;
-               } else
-                       goto out_unlock;
-       } else {
-               if (!nt->np.ipv6)
-                       nt->np.local_ip.ip = in_aton(buf);
-               else
-                       goto out_unlock;
-       }
+       ipv6 = netpoll_parse_ip_addr(buf, &nt->np.local_ip);
+       if (ipv6 == -1)
+               goto out_unlock;
+       nt->np.ipv6 = !!ipv6;
 
        ret = strnlen(buf, count);
 out_unlock: