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

Reply via email to