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>
---
drivers/net/netconsole.c | 22 +++++-----------------
1 file changed, 5 insertions(+), 17 deletions(-)
diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c
index f2c2b8852c603..b24e423a60268 100644
--- a/drivers/net/netconsole.c
+++ b/drivers/net/netconsole.c
@@ -751,6 +751,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) {
@@ -759,23 +760,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:
--
2.47.1
On Mon, Jul 21, 2025 at 06:02:04AM -0700, Breno Leitao wrote: > 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> My suggestion below not withstanding, this looks good to me. Reviewed-by: Simon Horman <horms@kernel.org> > --- > drivers/net/netconsole.c | 22 +++++----------------- > 1 file changed, 5 insertions(+), 17 deletions(-) > > diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c > index f2c2b8852c603..b24e423a60268 100644 > --- a/drivers/net/netconsole.c > +++ b/drivers/net/netconsole.c > @@ -751,6 +751,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) { > @@ -759,23 +760,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; I don't think this needs to block progress. And if you disagree that is fine too. But I would have expressed this as: nt->np.ipv6 = !!ipv6; Because nt->np.ipv6 is a bool and ipv6 is an int. Likewise for patch 5/5. ...
Hello Simon On Wed, Jul 23, 2025 at 03:54:00PM +0100, Simon Horman wrote: > > @@ -759,23 +760,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; > > I don't think this needs to block progress. > And if you disagree that is fine too. > But I would have expressed this as: > > nt->np.ipv6 = !!ipv6; > > Because nt->np.ipv6 is a bool and ipv6 is an int. > > Likewise for patch 5/5. Agree with the suggestion. I will update the patchset with your suggestion. Thank you very much for your review, again! --breno
© 2016 - 2025 Red Hat, Inc.