Message ID | 1596128631-3404-1-git-send-email-martinvarghesenokia@gmail.com |
---|---|
State | Changes Requested |
Delegated to: | David Miller |
Headers | show |
Series | [net] bareudp: Disallow udp port 0. | expand |
On Thu, 30 Jul 2020 22:33:51 +0530 Martin Varghese wrote: > From: Martin Varghese <martin.varghese@nokia.com> > > 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 <martin.varghese@nokia.com> > --- > 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; > + } > + } Please use one of the NLA_POLICY_**-ies, probably NLA_POLICY_MIN() ? That's better for documenting, exporting for user space, and will also point the user space to the attribute in exack automatically.
On Thu, Jul 30, 2020 at 04:20:30PM -0700, Jakub Kicinski wrote: > On Thu, 30 Jul 2020 22:33:51 +0530 Martin Varghese wrote: > > From: Martin Varghese <martin.varghese@nokia.com> > > > > 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 <martin.varghese@nokia.com> > > --- > > 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; > > + } > > + } > > Please use one of the NLA_POLICY_**-ies, probably NLA_POLICY_MIN() ? > That's better for documenting, exporting for user space, and will also > point the user space to the attribute in exack automatically. Ok, I will check how to do this way. Thanks for the feedback. Regards, Martin
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]);