diff options
author | Kulikov Vasiliy <segooon@gmail.com> | 2010-07-17 15:19:07 (GMT) |
---|---|---|
committer | Kevin Hilman <khilman@deeprootsystems.com> | 2010-09-24 14:40:25 (GMT) |
commit | 93fe23d8a9d95d8a85dfe2cb37cd9f220bef11b8 (patch) | |
tree | a253cfb59f9f5c602bed645b02a4fe3fa0de2e8b /arch/arm | |
parent | 85b8307fd03badbff0da5a75776c62cb45ee6551 (diff) | |
download | linux-93fe23d8a9d95d8a85dfe2cb37cd9f220bef11b8.tar.xz |
arm: mach-davinci: check irq2ctlr() result
If irq2ctlr() fails return IRQ_NONE.
Also as it can fail make 'ctlr' signed.
The semantic patch that finds this problem (many false-positive results):
(http://coccinelle.lip6.fr/)
// <smpl>
@ r1 @
identifier f;
@@
int f(...) { ... }
@@
identifier r1.f;
type T;
unsigned T x;
@@
*x = f(...)
...
*x > 0
Signed-off-by: Kulikov Vasiliy <segooon@gmail.com>
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/mach-davinci/dma.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/arm/mach-davinci/dma.c b/arch/arm/mach-davinci/dma.c index 2ede598..6b96698 100644 --- a/arch/arm/mach-davinci/dma.c +++ b/arch/arm/mach-davinci/dma.c @@ -354,10 +354,12 @@ static int irq2ctlr(int irq) static irqreturn_t dma_irq_handler(int irq, void *data) { int i; - unsigned ctlr; + int ctlr; unsigned int cnt = 0; ctlr = irq2ctlr(irq); + if (ctlr < 0) + return IRQ_NONE; dev_dbg(data, "dma_irq_handler\n"); @@ -408,10 +410,12 @@ static irqreturn_t dma_irq_handler(int irq, void *data) static irqreturn_t dma_ccerr_handler(int irq, void *data) { int i; - unsigned ctlr; + int ctlr; unsigned int cnt = 0; ctlr = irq2ctlr(irq); + if (ctlr < 0) + return IRQ_NONE; dev_dbg(data, "dma_ccerr_handler\n"); |