diff options
author | Kulikov Vasiliy <segooon@gmail.com> | 2010-07-17 11:19:07 -0400 |
---|---|---|
committer | Kevin Hilman <khilman@deeprootsystems.com> | 2010-09-24 10:40:25 -0400 |
commit | 93fe23d8a9d95d8a85dfe2cb37cd9f220bef11b8 (patch) | |
tree | a253cfb59f9f5c602bed645b02a4fe3fa0de2e8b /arch/arm | |
parent | 85b8307fd03badbff0da5a75776c62cb45ee6551 (diff) |
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 2ede598b77dd..6b9669869c46 100644 --- a/arch/arm/mach-davinci/dma.c +++ b/arch/arm/mach-davinci/dma.c | |||
@@ -354,10 +354,12 @@ static int irq2ctlr(int irq) | |||
354 | static irqreturn_t dma_irq_handler(int irq, void *data) | 354 | static irqreturn_t dma_irq_handler(int irq, void *data) |
355 | { | 355 | { |
356 | int i; | 356 | int i; |
357 | unsigned ctlr; | 357 | int ctlr; |
358 | unsigned int cnt = 0; | 358 | unsigned int cnt = 0; |
359 | 359 | ||
360 | ctlr = irq2ctlr(irq); | 360 | ctlr = irq2ctlr(irq); |
361 | if (ctlr < 0) | ||
362 | return IRQ_NONE; | ||
361 | 363 | ||
362 | dev_dbg(data, "dma_irq_handler\n"); | 364 | dev_dbg(data, "dma_irq_handler\n"); |
363 | 365 | ||
@@ -408,10 +410,12 @@ static irqreturn_t dma_irq_handler(int irq, void *data) | |||
408 | static irqreturn_t dma_ccerr_handler(int irq, void *data) | 410 | static irqreturn_t dma_ccerr_handler(int irq, void *data) |
409 | { | 411 | { |
410 | int i; | 412 | int i; |
411 | unsigned ctlr; | 413 | int ctlr; |
412 | unsigned int cnt = 0; | 414 | unsigned int cnt = 0; |
413 | 415 | ||
414 | ctlr = irq2ctlr(irq); | 416 | ctlr = irq2ctlr(irq); |
417 | if (ctlr < 0) | ||
418 | return IRQ_NONE; | ||
415 | 419 | ||
416 | dev_dbg(data, "dma_ccerr_handler\n"); | 420 | dev_dbg(data, "dma_ccerr_handler\n"); |
417 | 421 | ||