summaryrefslogtreecommitdiffstats
path: root/sys/net/if_bridge.c
diff options
context:
space:
mode:
authoremaste <emaste@FreeBSD.org>2012-07-10 13:17:32 +0000
committeremaste <emaste@FreeBSD.org>2012-07-10 13:17:32 +0000
commit83fbc9d8445922f3b1fbbff6a99cd21e8bb1b9fd (patch)
tree9ab08b81d0faaf89d9ac564ff466d525afe5bffa /sys/net/if_bridge.c
parent9ca1308bfb634fec0f594911944b51b4b01a5331 (diff)
downloadFreeBSD-src-83fbc9d8445922f3b1fbbff6a99cd21e8bb1b9fd.zip
FreeBSD-src-83fbc9d8445922f3b1fbbff6a99cd21e8bb1b9fd.tar.gz
Plug potential mbuf leak when bridging fragments
If an error occurs when transmitting one mbuf in a chain of fragments, free the subsequent fragments instead of leaking them. Sponsored by: ADARA Networks
Diffstat (limited to 'sys/net/if_bridge.c')
-rw-r--r--sys/net/if_bridge.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/net/if_bridge.c b/sys/net/if_bridge.c
index fd60bf2..7a57e9c 100644
--- a/sys/net/if_bridge.c
+++ b/sys/net/if_bridge.c
@@ -1813,6 +1813,8 @@ bridge_enqueue(struct bridge_softc *sc, struct ifnet *dst_ifp, struct mbuf *m)
if (err == 0)
err = dst_ifp->if_transmit(dst_ifp, m);
+ else
+ m_freem(m);
}
if (err == 0) {
OpenPOWER on IntegriCloud