tx_mtx should be grabbed before calling buf_ring_dequeue_sc()

Submitted by:Attilio.Rao@isilon.com
MFC after:5 days
This commit is contained in:
David C Somayajulu 2015-06-23 20:09:52 +00:00
parent bfe96f21a3
commit c197bf4fe1

View File

@ -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;