aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorHoratiu Vultur <horatiu.vultur@microchip.com>2020-06-23 11:05:41 +0200
committerDavid S. Miller <davem@davemloft.net>2020-06-23 14:38:05 -0700
commit7882c895b71b8cd6c81946fcc8e13d15a2841de7 (patch)
tree20a600442e4e86d13643d03771909596ce875f31
parentbridge: uapi: mrp: Fix MRP_PORT_ROLE (diff)
downloadwireguard-linux-7882c895b71b8cd6c81946fcc8e13d15a2841de7.tar.xz
wireguard-linux-7882c895b71b8cd6c81946fcc8e13d15a2841de7.zip
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>
-rw-r--r--net/bridge/br_mrp.c10
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);