From fd458696b3e939e82ec091fdb652ec096cdd7c9c Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Thu, 25 Feb 2016 07:03:10 +0000 Subject: [PATCH] hyperv/hn: Hold the TX ring lock then drain TX desc buf_ring Reported by: Hongxiong Xian MFC after: 1 week Sponsored by: Microsoft OSTC --- sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c b/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c index 5d32648a751..ce61fac32e5 100644 --- a/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c +++ b/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c @@ -2326,8 +2326,10 @@ hn_destroy_tx_ring(struct hn_tx_ring *txr) hn_txdesc_dmamap_destroy(txd); } #else + mtx_lock(&txr->hn_tx_lock); while ((txd = buf_ring_dequeue_sc(txr->hn_txdesc_br)) != NULL) hn_txdesc_dmamap_destroy(txd); + mtx_unlock(&txr->hn_tx_lock); #endif if (txr->hn_tx_data_dtag != NULL)