summaryrefslogtreecommitdiff
path: root/arch/blackfin
diff options
context:
space:
mode:
authorMike Frysinger <vapier.adi@gmail.com>2009-01-07 18:14:39 +0300
committerBryan Wu <cooloney@kernel.org>2009-01-07 18:14:39 +0300
commit8f1cc233881cd5335327ef84baa6ba1c83b379b4 (patch)
treee663b60299606914dd9b4418e63c38ffca492f64 /arch/blackfin
parent9b011407d653b92191aa4993222523039d44af52 (diff)
downloadlinux-8f1cc233881cd5335327ef84baa6ba1c83b379b4.tar.xz
Blackfin arch: set_dma_callback: do not store .irq
set_dma_callback: do not store .irq if request_irq() failed so we dont turn around and attempt to free_irq() it later on in free_dma() Signed-off-by: Mike Frysinger <vapier.adi@gmail.com> Signed-off-by: Bryan Wu <cooloney@kernel.org>
Diffstat (limited to 'arch/blackfin')
-rw-r--r--arch/blackfin/kernel/bfin_dma_5xx.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/arch/blackfin/kernel/bfin_dma_5xx.c b/arch/blackfin/kernel/bfin_dma_5xx.c
index bdebab41419f..ed7d2859a626 100644
--- a/arch/blackfin/kernel/bfin_dma_5xx.c
+++ b/arch/blackfin/kernel/bfin_dma_5xx.c
@@ -157,18 +157,16 @@ int set_dma_callback(unsigned int channel, irq_handler_t callback, void *data)
&& channel < MAX_DMA_CHANNELS));
if (callback != NULL) {
- int ret_val;
- dma_ch[channel].irq = channel2irq(channel);
- dma_ch[channel].data = data;
+ int ret;
+ unsigned int irq = channel2irq(channel);
- ret_val =
- request_irq(dma_ch[channel].irq, callback, IRQF_DISABLED,
- dma_ch[channel].device_id, data);
- if (ret_val) {
- printk(KERN_NOTICE
- "Request irq in DMA engine failed.\n");
- return -EPERM;
- }
+ ret = request_irq(irq, callback, IRQF_DISABLED,
+ dma_ch[channel].device_id, data);
+ if (ret)
+ return ret;
+
+ dma_ch[channel].irq = irq;
+ dma_ch[channel].data = data;
}
return 0;
}