Message ID | 3a7476b6-2ae9-494e-1840-0915ddf47c2f@web.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ASoC: SOF: ipc4-topology: Improve unlocking of a mutex in sof_ipc4_widget_free() | expand |
On 6/10/23 06:36, Markus Elfring wrote: > From: Markus Elfring <elfring@users.sourceforge.net> > Date: Sat, 10 Jun 2023 12:40:09 +0200 > > Add a jump target so that a call of the function “mutex_unlock” > is stored only once in this function implementation. > > Signed-off-by: Markus Elfring <elfring@users.sourceforge.net> > --- > sound/soc/sof/ipc4-topology.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/sound/soc/sof/ipc4-topology.c b/sound/soc/sof/ipc4-topology.c > index a4e1a70b607d..f0fd1dfa384e 100644 > --- a/sound/soc/sof/ipc4-topology.c > +++ b/sound/soc/sof/ipc4-topology.c > @@ -2300,8 +2300,7 @@ static int sof_ipc4_widget_free(struct snd_sof_dev *sdev, struct snd_sof_widget > if (pipeline->use_chain_dma) { > dev_warn(sdev->dev, "use_chain_dma set for scheduler %s", > swidget->widget->name); > - mutex_unlock(&ipc4_data->pipeline_state_mutex); > - return 0; > + goto unlock; > } > > header = SOF_IPC4_GLB_PIPE_INSTANCE_ID(swidget->instance_id); > @@ -2326,7 +2325,7 @@ static int sof_ipc4_widget_free(struct snd_sof_dev *sdev, struct snd_sof_widget > if (!pipeline->use_chain_dma) > ida_free(&fw_module->m_ida, swidget->instance_id); > } > - > +unlock: > mutex_unlock(&ipc4_data->pipeline_state_mutex); > > return ret; The change looks good but I am wondering if we need to print a dev_warn log which is already done on the sof_ipc4_widget_setup() path. This seems redundant. Ranjani, can we simplify?
diff --git a/sound/soc/sof/ipc4-topology.c b/sound/soc/sof/ipc4-topology.c index a4e1a70b607d..f0fd1dfa384e 100644 --- a/sound/soc/sof/ipc4-topology.c +++ b/sound/soc/sof/ipc4-topology.c @@ -2300,8 +2300,7 @@ static int sof_ipc4_widget_free(struct snd_sof_dev *sdev, struct snd_sof_widget if (pipeline->use_chain_dma) { dev_warn(sdev->dev, "use_chain_dma set for scheduler %s", swidget->widget->name); - mutex_unlock(&ipc4_data->pipeline_state_mutex); - return 0; + goto unlock; } header = SOF_IPC4_GLB_PIPE_INSTANCE_ID(swidget->instance_id); @@ -2326,7 +2325,7 @@ static int sof_ipc4_widget_free(struct snd_sof_dev *sdev, struct snd_sof_widget if (!pipeline->use_chain_dma) ida_free(&fw_module->m_ida, swidget->instance_id); } - +unlock: mutex_unlock(&ipc4_data->pipeline_state_mutex); return ret;