| From 632d5220b7f175d7957b8cafea96a3df77a3d38c Mon Sep 17 00:00:00 2001 |
| From: Herbert Xu <herbert@gondor.apana.org.au> |
| Date: Thu, 29 Jul 2010 01:12:31 +0000 |
| Subject: bridge: Fix skb leak when multicast parsing fails on TX |
| |
| |
| From: Herbert Xu <herbert@gondor.apana.org.au> |
| |
| [ Upstream commit 6d1d1d398cb7db7a12c5d652d50f85355345234f ] |
| |
| On the bridge TX path we're leaking an skb when br_multicast_rcv |
| returns an error. |
| |
| Reported-by: David Lamparter <equinox@diac24.net> |
| Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| --- |
| net/bridge/br_device.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/net/bridge/br_device.c |
| +++ b/net/bridge/br_device.c |
| @@ -37,8 +37,10 @@ netdev_tx_t br_dev_xmit(struct sk_buff * |
| |
| rcu_read_lock(); |
| if (dest[0] & 1) { |
| - if (br_multicast_rcv(br, NULL, skb)) |
| + if (br_multicast_rcv(br, NULL, skb)) { |
| + kfree_skb(skb); |
| goto out; |
| + } |
| |
| mdst = br_mdb_get(br, skb); |
| if (mdst || BR_INPUT_SKB_CB_MROUTERS_ONLY(skb)) |