提交 6d1d1d39 编写于 作者: H Herbert Xu 提交者: David S. Miller

bridge: Fix skb leak when multicast parsing fails on TX

On the bridge TX path we're leaking an skb when br_multicast_rcv
returns an error.
Reported-by: NDavid Lamparter <equinox@diac24.net>
Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 a3bdb549
...@@ -48,8 +48,10 @@ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -48,8 +48,10 @@ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev)
rcu_read_lock(); rcu_read_lock();
if (is_multicast_ether_addr(dest)) { if (is_multicast_ether_addr(dest)) {
if (br_multicast_rcv(br, NULL, skb)) if (br_multicast_rcv(br, NULL, skb)) {
kfree_skb(skb);
goto out; goto out;
}
mdst = br_mdb_get(br, skb); mdst = br_mdb_get(br, skb);
if (mdst || BR_INPUT_SKB_CB_MROUTERS_ONLY(skb)) if (mdst || BR_INPUT_SKB_CB_MROUTERS_ONLY(skb))
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册