[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220127074953.12632-1-tim.yi@pica8.com>
Date: Thu, 27 Jan 2022 15:49:53 +0800
From: Tim Yi <tim.yi@...a8.com>
To: nikolay@...dia.com
Cc: roopa@...dia.com, davem@...emloft.net, kuba@...nel.org,
bridge@...ts.linux-foundation.org, netdev@...r.kernel.org,
Tim Yi <tim.yi@...a8.com>
Subject: [PATCH] net: bridge: vlan: fix memory leak in __allowed_ingress
When using per-vlan state, if vlan snooping and stats are disabled,
untagged or priority-tagged ingress frame will go to check pvid state.
If the port state is forwarding and the pvid state is not
learning/forwarding, untagged or priority-tagged frame will be dropped
but skb memory is not freed.
Should free skb when __allowed_ingress returns false.
Signed-off-by: Tim Yi <tim.yi@...a8.com>
---
net/bridge/br_vlan.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/net/bridge/br_vlan.c b/net/bridge/br_vlan.c
index 84ba456a78cc..88c4297cddee 100644
--- a/net/bridge/br_vlan.c
+++ b/net/bridge/br_vlan.c
@@ -560,10 +560,10 @@ static bool __allowed_ingress(const struct net_bridge *br,
!br_opt_get(br, BROPT_VLAN_STATS_ENABLED)) {
if (*state == BR_STATE_FORWARDING) {
*state = br_vlan_get_pvid_state(vg);
- return br_vlan_state_allowed(*state, true);
- } else {
- return true;
+ if (!br_vlan_state_allowed(*state, true))
+ goto drop;
}
+ return true;
}
}
v = br_vlan_find(vg, *vid);
--
2.28.0.618.g9bc233ae1c
Powered by blists - more mailing lists