diff options
author | Horatiu Vultur <horatiu.vultur@microchip.com> | 2020-06-23 11:05:41 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-06-23 14:38:05 -0700 |
commit | 7882c895b71b8cd6c81946fcc8e13d15a2841de7 (patch) | |
tree | 20a600442e4e86d13643d03771909596ce875f31 /net | |
parent | 2464bc7c2897b7549146a743045089d3aea7b85b (diff) |
bridge: mrp: Validate when setting the port role
This patch adds specific checks for primary(0x0) and secondary(0x1) when
setting the port role. For any other value the function
'br_mrp_set_port_role' will return -EINVAL.
Fixes: 20f6a05ef63594 ("bridge: mrp: Rework the MRP netlink interface")
Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/bridge/br_mrp.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/net/bridge/br_mrp.c b/net/bridge/br_mrp.c index 24986ec7d38c..779e1eb75443 100644 --- a/net/bridge/br_mrp.c +++ b/net/bridge/br_mrp.c @@ -411,10 +411,16 @@ int br_mrp_set_port_role(struct net_bridge_port *p, if (!mrp) return -EINVAL; - if (role == BR_MRP_PORT_ROLE_PRIMARY) + switch (role) { + case BR_MRP_PORT_ROLE_PRIMARY: rcu_assign_pointer(mrp->p_port, p); - else + break; + case BR_MRP_PORT_ROLE_SECONDARY: rcu_assign_pointer(mrp->s_port, p); + break; + default: + return -EINVAL; + } br_mrp_port_switchdev_set_role(p, role); |