lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 21 May 2020 11:18:20 +0300 From: Nikolay Aleksandrov <nikolay@...ulusnetworks.com> To: Horatiu Vultur <horatiu.vultur@...rochip.com>, jiri@...nulli.us, ivecera@...hat.com, davem@...emloft.net, kuba@...nel.org, roopa@...ulusnetworks.com, andrew@...n.ch, UNGLinuxDriver@...rochip.com, netdev@...r.kernel.org, linux-kernel@...r.kernel.org, bridge@...ts.linux-foundation.org Subject: Re: [PATCH 3/3] bridge: mrp: Restore port state when deleting MRP instance On 20/05/2020 16:09, Horatiu Vultur wrote: > When a MRP instance is deleted, then restore the port according to the > bridge state. If the bridge is up then the ports will be in forwarding > state otherwise will be in disabled state. > > Fixes: 9a9f26e8f7ea ("bridge: mrp: Connect MRP API with the switchdev API") > Signed-off-by: Horatiu Vultur <horatiu.vultur@...rochip.com> > --- > net/bridge/br_mrp.c | 13 +++++++++---- > 1 file changed, 9 insertions(+), 4 deletions(-) > Acked-by: Nikolay Aleksandrov <nikolay@...ulusnetworks.com> > diff --git a/net/bridge/br_mrp.c b/net/bridge/br_mrp.c > index a5a3fa59c078a..bdd8920c15053 100644 > --- a/net/bridge/br_mrp.c > +++ b/net/bridge/br_mrp.c > @@ -229,6 +229,7 @@ static void br_mrp_test_work_expired(struct work_struct *work) > static void br_mrp_del_impl(struct net_bridge *br, struct br_mrp *mrp) > { > struct net_bridge_port *p; > + u8 state; > > /* Stop sending MRP_Test frames */ > cancel_delayed_work_sync(&mrp->test_work); > @@ -240,20 +241,24 @@ static void br_mrp_del_impl(struct net_bridge *br, struct br_mrp *mrp) > p = rtnl_dereference(mrp->p_port); > if (p) { > spin_lock_bh(&br->lock); > - p->state = BR_STATE_FORWARDING; > + state = netif_running(br->dev) ? > + BR_STATE_FORWARDING : BR_STATE_DISABLED; > + p->state = state; > p->flags &= ~BR_MRP_AWARE; > spin_unlock_bh(&br->lock); > - br_mrp_port_switchdev_set_state(p, BR_STATE_FORWARDING); > + br_mrp_port_switchdev_set_state(p, state); > rcu_assign_pointer(mrp->p_port, NULL); > } > > p = rtnl_dereference(mrp->s_port); > if (p) { > spin_lock_bh(&br->lock); > - p->state = BR_STATE_FORWARDING; > + state = netif_running(br->dev) ? > + BR_STATE_FORWARDING : BR_STATE_DISABLED; > + p->state = state; > p->flags &= ~BR_MRP_AWARE; > spin_unlock_bh(&br->lock); > - br_mrp_port_switchdev_set_state(p, BR_STATE_FORWARDING); > + br_mrp_port_switchdev_set_state(p, state); > rcu_assign_pointer(mrp->s_port, NULL); > } > >
Powered by blists - more mailing lists