Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Nov 2012 17:06:21 +0000 (UTC)
From:      Ed Maste <emaste@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r243289 - stable/9/sys/net
Message-ID:  <201211191706.qAJH6Lr9005362@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: emaste
Date: Mon Nov 19 17:06:21 2012
New Revision: 243289
URL: http://svnweb.freebsd.org/changeset/base/243289

Log:
  MFC r238298: Restore error handling lost in r191603
  
    This was missed in the change from IFQ_ENQUEUE to if_transmit.
  
  MFC r238346: 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.
  
  MFC r238355: Simplify error case
  
    Submitted by:        thompsa@
  
  Sponsored by: ADARA Networks

Modified:
  stable/9/sys/net/if_bridge.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/net/if_bridge.c
==============================================================================
--- stable/9/sys/net/if_bridge.c	Mon Nov 19 16:52:58 2012	(r243288)
+++ stable/9/sys/net/if_bridge.c	Mon Nov 19 17:06:21 2012	(r243289)
@@ -1811,8 +1811,10 @@ bridge_enqueue(struct bridge_softc *sc, 
 			m->m_flags &= ~M_VLANTAG;
 		}
 
-		if (err == 0)
-			dst_ifp->if_transmit(dst_ifp, m);
+		if ((err = dst_ifp->if_transmit(dst_ifp, m))) {
+			m_freem(m0);
+			break;
+		}
 	}
 
 	if (err == 0) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201211191706.qAJH6Lr9005362>