From: Martin Varghese <[email protected]>
Kernel does not support udp destination port 0 on wire. Hence
bareudp device with udp destination port 0 must be disallowed.
Fixes: 571912c69f0e ("net: UDP tunnel encapsulation module for tunnelling
different protocols like MPLS, IP, NSH etc.")
Signed-off-by: Martin Varghese <[email protected]>
---
drivers/net/bareudp.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/net/bareudp.c b/drivers/net/bareudp.c
index 88e7900853db..08b195d32cbe 100644
--- a/drivers/net/bareudp.c
+++ b/drivers/net/bareudp.c
@@ -578,8 +578,13 @@ static int bareudp2info(struct nlattr *data[], struct
bareudp_conf *conf,
return -EINVAL;
}
- if (data[IFLA_BAREUDP_PORT])
+ if (data[IFLA_BAREUDP_PORT]) {
conf->port = nla_get_u16(data[IFLA_BAREUDP_PORT]);
+ if (!conf->port) {
+ NL_SET_ERR_MSG(extack, "udp port 0 not supported");
+ return -EINVAL;
+ }
+ }
if (data[IFLA_BAREUDP_ETHERTYPE])
conf->ethertype = nla_get_u16(data[IFLA_BAREUDP_ETHERTYPE]);
--
2.18.4