From dc9215903809f74bd27cef332a18858711f928a0 Mon Sep 17 00:00:00 2001 From: fangtong Date: Sat, 5 Jun 2021 21:45:36 +0800 Subject: [PATCH] memif: fix the spinlock and unlock issue. when the configuration of tx queues is larger than the worker-threads, the clib_spinlock_lock_if_init will not be executed, and then this function will executed the clib_spinlock_unlock_if_init, so this may caused the issue. Type: fix Signed-off-by: fangtong Change-Id: I3ce244cd5e1f410e9f14bd060b929238f069b9fa --- src/plugins/memif/device.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/memif/device.c b/src/plugins/memif/device.c index fcbdc0d89ae..8e902feac08 100644 --- a/src/plugins/memif/device.c +++ b/src/plugins/memif/device.c @@ -388,11 +388,12 @@ VNET_DEVICE_CLASS_TX_FN (memif_device_class) (vlib_main_t * vm, { ASSERT (tx_queues > 0); mq = vec_elt_at_index (mif->tx_queues, thread_index % tx_queues); - clib_spinlock_lock_if_init (&mif->lockp); } else mq = vec_elt_at_index (mif->tx_queues, thread_index); + clib_spinlock_lock_if_init (&mif->lockp); + from = vlib_frame_vector_args (frame); n_left = frame->n_vectors; if (mif->flags & MEMIF_IF_FLAG_ZERO_COPY) -- 2.16.6