Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Jun 2015 20:09:53 +0000 (UTC)
From:      David C Somayajulu <davidcs@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r284739 - head/sys/dev/bxe
Message-ID:  <201506232009.t5NK9rmL034642@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: davidcs
Date: Tue Jun 23 20:09:52 2015
New Revision: 284739
URL: https://svnweb.freebsd.org/changeset/base/284739

Log:
  tx_mtx should be grabbed before calling buf_ring_dequeue_sc()
  
  Submitted by:Attilio.Rao@isilon.com
  MFC after:5 days

Modified:
  head/sys/dev/bxe/bxe.c

Modified: head/sys/dev/bxe/bxe.c
==============================================================================
--- head/sys/dev/bxe/bxe.c	Tue Jun 23 20:01:12 2015	(r284738)
+++ head/sys/dev/bxe/bxe.c	Tue Jun 23 20:09:52 2015	(r284739)
@@ -6547,10 +6547,14 @@ bxe_free_fp_buffers(struct bxe_softc *sc
 
 #if __FreeBSD_version >= 800000
         if (fp->tx_br != NULL) {
-            struct mbuf *m;
             /* just in case bxe_mq_flush() wasn't called */
-            while ((m = buf_ring_dequeue_sc(fp->tx_br)) != NULL) {
-                m_freem(m);
+            if (mtx_initialized(&fp->tx_mtx)) {
+                struct mbuf *m;
+
+                BXE_FP_TX_LOCK(fp);
+                while ((m = buf_ring_dequeue_sc(fp->tx_br)) != NULL)
+                    m_freem(m);
+                BXE_FP_TX_UNLOCK(fp);
             }
             buf_ring_free(fp->tx_br, M_DEVBUF);
             fp->tx_br = NULL;



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