Re: [PATCH 16/29] staging: bcm2835-audio: Drop superfluous mutex lock during prepare

Takashi Iwai
2018-09-08T16:13:03Z

On Sat, 08 Sep 2018 15:40:41 +0200,
Stefan Wahren wrote:
>
> Hi,
>
> > Takashi Iwai <tiwai@suse.de> hat am 4. September 2018 um 17:58 geschrieben:
> >
> >
> > The chip->audio_mutex is used basically for protecting the opened
> > stream assignment, and the prepare callback is irrelevant with it.
> >
> > Signed-off-by: Takashi Iwai <tiwai@suse.de>
> > ---
> > drivers/staging/vc04_services/bcm2835-audio/bcm2835-pcm.c | 8 ++------
> > 1 file changed, 2 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/staging/vc04_services/bcm2835-audio/bcm2835-pcm.c b/drivers/staging/vc04_services/bcm2835-audio/bcm2835-pcm.c
> > index 1f9c940f1cc3..9659c25b9f9d 100644
> > --- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835-pcm.c
> > +++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835-pcm.c
> > @@ -218,8 +218,6 @@ static int snd_bcm2835_pcm_prepare(struct snd_pcm_substream *substream)
> > int channels;
> > int err;
> >
> > - mutex_lock(&chip->audio_mutex);
> > -
> > /* notify the vchiq that it should enter spdif passthrough mode by
> > * setting channels=0 (see
> > * https://github.com/raspberrypi/linux/issues/528)
> > @@ -233,7 +231,7 @@ static int snd_bcm2835_pcm_prepare(struct snd_pcm_substream *substream)
> > runtime->rate,
> > snd_pcm_format_width(runtime->format));
> > if (err < 0)
> > - goto out;
> > + return err;
> >
> > memset(&alsa_stream->pcm_indirect, 0, sizeof(alsa_stream->pcm_indirect));
> >
> > @@ -246,9 +244,7 @@ static int snd_bcm2835_pcm_prepare(struct snd_pcm_substream *substream)
> > alsa_stream->pos = 0;
> > alsa_stream->draining = false;
> >
> > - out:
> > - mutex_unlock(&chip->audio_mutex);
> > - return err;
> > + return 0;
>
> looks like your are removing code which has been added in patch #14 ?

No, the patch #14 corrects the missing error path. Without patch 14,
the error from prepare is ignored. And this patch gets rid of the
superfluous mutex lock.

thanks,

Takashi