[PATCH 1/2] ioplug: Check for callback error codes

Takashi Iwai tiwai at suse.de
Mon Aug 23 17:09:57 CEST 2021


On Mon, 23 Aug 2021 13:46:37 +0200,
Arkadiusz Bokowy wrote:
> 
> Signed-off-by: Arkadiusz Bokowy <arkadiusz.bokowy at gmail.com>

The lack of the patch description is always a sign of a bad patch.
Please put more information here, especially why this change is
required.

And the whole patch seems malformed and can't be applied.  Please fix
your mailer setup.

About the code change:
>  /* update the hw pointer */
>  /* called in lock */
> -static void snd_pcm_ioplug_hw_ptr_update(snd_pcm_t *pcm)
> +static int snd_pcm_ioplug_hw_ptr_update(snd_pcm_t *pcm)
>  {
>   ioplug_priv_t *io = pcm->private_data;
>   snd_pcm_sframes_t hw;
> @@ -85,7 +85,9 @@ static void snd_pcm_ioplug_hw_ptr_update(snd_pcm_t *pcm)
>   snd_pcm_ioplug_drop(pcm);
>   else
>   io->data->state = SNDRV_PCM_STATE_XRUN;
> + return -EPIPE;

If xrun happens during the draining, it's rather handled as
successfully drained, hence better to return 0 there.

> @@ -898,13 +906,14 @@ static void clear_io_params(ioplug_priv_t *io)
>  static int snd_pcm_ioplug_close(snd_pcm_t *pcm)
>  {
>   ioplug_priv_t *io = pcm->private_data;
> + int err = 0;
> 
>   clear_io_params(io);
>   if (io->data->callback->close)
> - io->data->callback->close(io->data);
> + err = io->data->callback->close(io->data);
>   free(io);
> 
> - return 0;
> + return err;

This is dangerous.  It may leave a error state while the resources
have been already released.  Then application cannot do anything after
that.

If we really want to check the return value, the resource releases
should be done after that point, so that application may call the
close again.


thanks,

Takashi


More information about the Alsa-devel mailing list