[alsa-devel] [bug report] ASoC: rsnd: Request/Release DMA channel each time

Kuninori Morimoto kuninori.morimoto.gx at renesas.com
Mon Nov 6 01:02:03 CET 2017


Hi Dan

> sound/soc/sh/rcar/dma.c
>    192  static int rsnd_dmaen_nolock_start(struct rsnd_mod *mod,
>    193                              struct rsnd_dai_stream *io,
>    194                              struct rsnd_priv *priv)
>    195  {
>    196          struct rsnd_dma *dma = rsnd_mod_to_dma(mod);
>    197          struct rsnd_dmaen *dmaen = rsnd_dma_to_dmaen(dma);
>    198          struct device *dev = rsnd_priv_to_dev(priv);
>    199  
>    200          if (dmaen->chan) {
>    201                  dev_err(dev, "it already has dma channel\n");
>    202                  return -EIO;
>    203          }
>    204  
>    205          /*
>    206           * DMAEngine request uses mutex lock.
>    207           * Thus, it shouldn't be called under spinlock.
>    208           * Let's call it under nolock_start
>    209           */
>    210          dmaen->chan = rsnd_dmaen_request_channel(io,
>    211                                                   dma->mod_from,
>    212                                                   dma->mod_to);
>    213          if (IS_ERR_OR_NULL(dmaen->chan)) {
>    214                  int ret = PTR_ERR(dmaen->chan);
>    215  
>    216                  dmaen->chan = NULL;
>    217                  dev_err(dev, "can't get dma channel\n");
>    218                  return ret;
> 
> PTR_ERR(NULL) is success.  Normally when a function returns both NULL
> and error pointers, it means that NULL is not a error.  For example,
> you call get_some_resource_pointer() and it returns NULL because your
> computer doesn't have one of those resources plugged in, but it returns
> an error pointer if it's defective or you're out of memory or whatever.
> In this case it really feels like NULL is returned on error so the right
> fix is to make rsnd_dmaen_request_channel() never return NULL and never
> be checked for NULL.

Thank you for your report.
Indeed, I will send fixup patch today.

Best regards
---
Kuninori Morimoto


More information about the Alsa-devel mailing list