Message ID | 1592199569-5243-1-git-send-email-martinvarghesenokia@gmail.com |
---|---|
State | Changes Requested |
Delegated to: | David Miller |
Headers | show |
Series | [net] bareudp: Fixed multiproto mode configuration | expand |
From: Martin Varghese <martinvarghesenokia@gmail.com> Date: Mon, 15 Jun 2020 11:09:29 +0530 > From: Martin <martin.varghese@nokia.com> > > Code to handle multiproto configuration is missing. > > Fixes: 4b5f67232d95 ("net: Special handling for IP & MPLS") > Signed-off-by: Martin <martin.varghese@nokia.com> There are two bugs here. 'conf' is not initialized and can contain garbage, for all fields not just the multiproto mode configuration. And also the multiproto mode configuration is not looked at. So there should be two patches, one for each bug.
diff --git a/drivers/net/bareudp.c b/drivers/net/bareudp.c index efd1a1d..3dd46cd 100644 --- a/drivers/net/bareudp.c +++ b/drivers/net/bareudp.c @@ -552,6 +552,8 @@ static int bareudp_validate(struct nlattr *tb[], struct nlattr *data[], static int bareudp2info(struct nlattr *data[], struct bareudp_conf *conf, struct netlink_ext_ack *extack) { + memset(conf, 0, sizeof(*conf)); + if (!data[IFLA_BAREUDP_PORT]) { NL_SET_ERR_MSG(extack, "port not specified"); return -EINVAL; @@ -570,6 +572,9 @@ static int bareudp2info(struct nlattr *data[], struct bareudp_conf *conf, if (data[IFLA_BAREUDP_SRCPORT_MIN]) conf->sport_min = nla_get_u16(data[IFLA_BAREUDP_SRCPORT_MIN]); + if (data[IFLA_BAREUDP_MULTIPROTO_MODE]) + conf->multi_proto_mode = true; + return 0; }