dma: sh: Don't use ENODEV for failing slave lookup
authorGuennadi Liakhovetski <g.liakhovetski@gmx.de>
Wed, 28 Nov 2012 06:49:47 +0000 (06:49 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 28 Feb 2013 13:38:42 +0000 (05:38 -0800)
commit 7c1119bdd650fa58dad8157bc75c5fcf6ed97843 upstream.

If dmaengine driver's .device_alloc_chan_resources() method returns -ENODEV,
dma_request_channel() will decide, that the driver has been removed and will
remove the device from its list. To prevent this use ENXIO if a slave lookup
fails.

Reported-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Vinod Koul <vinod.koul@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/dma/sh/shdma.c

index 3315e4b..b70709b 100644 (file)
@@ -326,7 +326,7 @@ static int sh_dmae_set_slave(struct shdma_chan *schan,
                                                    shdma_chan);
        const struct sh_dmae_slave_config *cfg = dmae_find_slave(sh_chan, slave_id);
        if (!cfg)
-               return -ENODEV;
+               return -ENXIO;
 
        if (!try)
                sh_chan->config = cfg;