diff --git a/drivers/usbdev/cdcacm.c b/drivers/usbdev/cdcacm.c index 73c7bc03be7..2858ee19ef2 100644 --- a/drivers/usbdev/cdcacm.c +++ b/drivers/usbdev/cdcacm.c @@ -1497,6 +1497,10 @@ static void cdcacm_unbind(FAR struct usbdevclass_driver_s *driver, * of them) */ +#ifdef CONFIG_CDCACM_DISABLE_TXBUF + nxmutex_lock(&priv->serdev.xmit.lock); +#endif + flags = spin_lock_irqsave(&priv->lock); #ifdef CONFIG_CDCACM_DISABLE_TXBUF @@ -1524,6 +1528,10 @@ static void cdcacm_unbind(FAR struct usbdevclass_driver_s *driver, DEBUGASSERT(priv->nwrq == 0); spin_unlock_irqrestore(&priv->lock, flags); +#ifdef CONFIG_CDCACM_DISABLE_TXBUF + nxmutex_unlock(&priv->serdev.xmit.lock); +#endif + #ifdef CONFIG_CDCACM_HAVE_EPINTIN /* Free the interrupt IN endpoint */