jerpelea opened a new pull request, #20287: URL: https://github.com/apache/nuttx/pull/20287
## Summary Fix a potential deadlock in the DMA driver. DMA completion callbacks may immediately submit another transfer, for example: imx9_dmaterminate() -> imx9_dma_txcallback() -> imx9_dma_txavailable() -> uart_xmitchars_dma() -> imx9_dma_send() -> imx9_dmach_stop() -> imx9_dmaterminate() Resulting dmaterminate to take the same spinlock again. Fix this by moving the spin_unlock_irqrestore_nopreempt before calling the callback. It is not necessary to keep dma channel locked during the callback; the channel is already free at this point. This doesn't directly affect arch/arm/imx9 (the cortex-m version) because it is not SMP (the spinlock is reduced to blocking irqs), but it is worth fixing at the same to keep drivers in sync. ## Impact RELEASE ## Testing CI -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
