|
|
|
@ -15,17 +15,19 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> |
|
|
|
|
|
|
|
|
|
--- a/net/bridge/br_input.c
|
|
|
|
|
+++ b/net/bridge/br_input.c
|
|
|
|
|
@@ -233,7 +233,8 @@ static int br_handle_local_finish(struct
|
|
|
|
|
@@ -231,7 +231,10 @@ static void __br_handle_local_finish(str
|
|
|
|
|
/* note: already called with rcu_read_lock */
|
|
|
|
|
static int br_handle_local_finish(struct net *net, struct sock *sk, struct sk_buff *skb)
|
|
|
|
|
{
|
|
|
|
|
struct net_bridge_port *p = br_port_get_rcu(skb->dev);
|
|
|
|
|
|
|
|
|
|
- __br_handle_local_finish(skb);
|
|
|
|
|
+ struct net_bridge_port *p = br_port_get_rcu(skb->dev);
|
|
|
|
|
+
|
|
|
|
|
+ if (p->state != BR_STATE_DISABLED)
|
|
|
|
|
+ __br_handle_local_finish(skb);
|
|
|
|
|
|
|
|
|
|
BR_INPUT_SKB_CB(skb)->brdev = p->br->dev;
|
|
|
|
|
br_pass_frame_up(skb);
|
|
|
|
|
@@ -316,6 +317,15 @@ rx_handler_result_t br_handle_frame(stru
|
|
|
|
|
/* return 1 to signal the okfn() was called so it's ok to use the skb */
|
|
|
|
|
return 1;
|
|
|
|
|
@@ -321,6 +324,15 @@ rx_handler_result_t br_handle_frame(stru
|
|
|
|
|
|
|
|
|
|
forward:
|
|
|
|
|
switch (p->state) {
|
|
|
|
|