On Mon, Mar 31, 2025 at 07:22:45PM +0800, Peng Fan (OSS) wrote: > From: Peng Fan <peng....@nxp.com> > > Same as > commit 47e6ab07018e ("remoteproc: imx_dsp_rproc: Add mutex > protection for workqueue") and commit 35bdafda40cc ("remoteproc: > stm32_rproc: Add mutex protection for workqueue"), imx_rproc driver > also has similar issue, although no issue reported until now.
Can fix wrap Same as commit 47e6ab07018e ("remoteproc: imx_dsp_rproc: Add mutex... > > Reuse the commit log from the fix to imx_dsp_rproc: This sentense look like reduntant. > > The workqueue may execute late even after remoteproc is stopped or > stopping, some resources (rpmsg device and endpoint) have been > released in rproc_stop_subdevices(), then rproc_vq_interrupt() > accessing these resources will cause kennel dump. > > Call trace: > virtqueue_add_split > virtqueue_add_inbuf > rpmsg_recv_done > vring_interrupt > rproc_vq_interrupt > imx_rproc_vq_work > process_one_work > worker_thread > kthread > ret_from_fork > > Signed-off-by: Peng Fan <peng....@nxp.com> Reviewed-by: Frank Li <frank...@nxp.com> > --- > drivers/remoteproc/imx_rproc.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c > index 74299af1d7f1..f933c8f4fc8b 100644 > --- a/drivers/remoteproc/imx_rproc.c > +++ b/drivers/remoteproc/imx_rproc.c > @@ -5,6 +5,7 @@ > > #include <dt-bindings/firmware/imx/rsrc.h> > #include <linux/arm-smccc.h> > +#include <linux/cleanup.h> > #include <linux/clk.h> > #include <linux/err.h> > #include <linux/firmware/imx/sci.h> > @@ -785,6 +786,11 @@ static void imx_rproc_vq_work(struct work_struct *work) > rproc_work); > struct rproc *rproc = priv->rproc; > > + guard(mutex)(&rproc->lock); > + > + if (rproc->state != RPROC_RUNNING) > + return; > + > idr_for_each(&rproc->notifyids, imx_rproc_notified_idr_cb, rproc); > } > > -- > 2.37.1 >