[PATCH net-next v3 4/7] netconsole: reject a target mixing IPv4 and IPv6 addresses
Gustavo Luiz Duarte <[email protected]>
| Newsgroups | org.kernel.vger.netdev,org.kernel.vger.linux-doc,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
The local_ip and remote_ip configfs attributes are written independently and nothing stops a user from mixing ipv4 and ipv6. This leads to an ipv4 address being zero-extended into an ipv6 header or an ipv6 address being truncated to its first 4 bytes for an ipv4 header. The command-line parser already refuses such a mismatch. This adds a similar check when a dynamic target is being enabled. Reviewed-by: Breno Leitao <[email protected]> Signed-off-by: Gustavo Luiz Duarte <[email protected]> --- drivers/net/netconsole.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index 4af4f3039d4c..abcc8515ddd2 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -488,6 +488,12 @@ static int netcons_netpoll_setup(struct netconsole_target *nt) return -EDESTADDRREQ; } + if (nt->local_ip.family != AF_UNSPEC && + nt->local_ip.family != nt->remote_ip.family) { + np_err(np, "local and remote IP address families differ, aborting\n"); + return -EINVAL; + } + rtnl_lock(); if (np->dev_name[0]) ndev = __dev_get_by_name(net, np->dev_name); -- 2.55.0