Patch "net: bridge: mst: Check vlan state for egress decision" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    net: bridge: mst: Check vlan state for egress decision

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     net-bridge-mst-check-vlan-state-for-egress-decision.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit a169b5c37dc76222fd69483f6a38cb4de64c1482
Author: Elliot Ayrey <elliot.ayrey@xxxxxxxxxxxxxxxxxxx>
Date:   Fri Jul 12 13:31:33 2024 +1200

    net: bridge: mst: Check vlan state for egress decision
    
    [ Upstream commit 0a1868b93fad5938dbcca77286b25bf211c49f7a ]
    
    If a port is blocking in the common instance but forwarding in an MST
    instance, traffic egressing the bridge will be dropped because the
    state of the common instance is overriding that of the MST instance.
    
    Fix this by skipping the port state check in MST mode to allow
    checking the vlan state via br_allowed_egress(). This is similar to
    what happens in br_handle_frame_finish() when checking ingress
    traffic, which was introduced in the change below.
    
    Fixes: ec7328b59176 ("net: bridge: mst: Multiple Spanning Tree (MST) mode")
    Signed-off-by: Elliot Ayrey <elliot.ayrey@xxxxxxxxxxxxxxxxxxx>
    Acked-by: Nikolay Aleksandrov <razor@xxxxxxxxxxxxx>
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c
index 9661698e86e40..a32d73f381558 100644
--- a/net/bridge/br_forward.c
+++ b/net/bridge/br_forward.c
@@ -25,8 +25,8 @@ static inline int should_deliver(const struct net_bridge_port *p,
 
 	vg = nbp_vlan_group_rcu(p);
 	return ((p->flags & BR_HAIRPIN_MODE) || skb->dev != p->dev) &&
-		p->state == BR_STATE_FORWARDING && br_allowed_egress(vg, skb) &&
-		nbp_switchdev_allowed_egress(p, skb) &&
+		(br_mst_is_enabled(p->br) || p->state == BR_STATE_FORWARDING) &&
+		br_allowed_egress(vg, skb) && nbp_switchdev_allowed_egress(p, skb) &&
 		!br_skb_isolated(p, skb);
 }
 




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux