2009-11-01 13:35:24

by Roel Kluin

[permalink] [raw]
Subject: [PATCH] CRIS v32: Should index be positive?

`port' is used as index for writing to pins during
allocation/deallocation. It should be positive.

Signed-off-by: Roel Kluin <[email protected]>
---
arch/cris/arch-v32/kernel/pinmux.c | 4 ++--
arch/cris/arch-v32/mach-a3/pinmux.c | 2 +-
arch/cris/arch-v32/mach-fs/pinmux.c | 4 ++--
3 files changed, 5 insertions(+), 5 deletions(-)

Found by code analysis, is it required?

diff --git a/arch/cris/arch-v32/kernel/pinmux.c b/arch/cris/arch-v32/kernel/pinmux.c
index 6eb54ea..f6f3637 100644
--- a/arch/cris/arch-v32/kernel/pinmux.c
+++ b/arch/cris/arch-v32/kernel/pinmux.c
@@ -54,7 +54,7 @@ crisv32_pinmux_alloc(int port, int first_pin, int last_pin, enum pin_mode mode)

crisv32_pinmux_init();

- if (port > PORTS)
+ if (port > PORTS || port < 0)
return -EINVAL;

spin_lock_irqsave(&pinmux_lock, flags);
@@ -197,7 +197,7 @@ crisv32_pinmux_dealloc(int port, int first_pin, int last_pin)

crisv32_pinmux_init();

- if (port > PORTS)
+ if (port > PORTS || port < 0)
return -EINVAL;

spin_lock_irqsave(&pinmux_lock, flags);
diff --git a/arch/cris/arch-v32/mach-a3/pinmux.c b/arch/cris/arch-v32/mach-a3/pinmux.c
index 0a28c9b..18648ef 100644
--- a/arch/cris/arch-v32/mach-a3/pinmux.c
+++ b/arch/cris/arch-v32/mach-a3/pinmux.c
@@ -242,7 +242,7 @@ crisv32_pinmux_dealloc(int port, int first_pin, int last_pin)

crisv32_pinmux_init();

- if (port > PORTS)
+ if (port > PORTS || port < 0)
return -EINVAL;

spin_lock_irqsave(&pinmux_lock, flags);
diff --git a/arch/cris/arch-v32/mach-fs/pinmux.c b/arch/cris/arch-v32/mach-fs/pinmux.c
index d722ad9..38f29ee 100644
--- a/arch/cris/arch-v32/mach-fs/pinmux.c
+++ b/arch/cris/arch-v32/mach-fs/pinmux.c
@@ -54,7 +54,7 @@ crisv32_pinmux_alloc(int port, int first_pin, int last_pin, enum pin_mode mode)

crisv32_pinmux_init();

- if (port > PORTS)
+ if (port > PORTS || port < 0)
return -EINVAL;

spin_lock_irqsave(&pinmux_lock, flags);
@@ -195,7 +195,7 @@ int crisv32_pinmux_dealloc(int port, int first_pin, int last_pin)

crisv32_pinmux_init();

- if (port > PORTS)
+ if (port > PORTS || port < 0)
return -EINVAL;

spin_lock_irqsave(&pinmux_lock, flags);


2009-11-03 12:12:30

by Jesper Nilsson

[permalink] [raw]
Subject: Re: [PATCH] CRIS v32: Should index be positive?

On Sun, Nov 01, 2009 at 02:46:26PM +0100, Roel Kluin wrote:
> `port' is used as index for writing to pins during
> allocation/deallocation. It should be positive.

Yup, that's correct. I've added this to the CRIS tree.
Thanks!

/^JN - Jesper Nilsson
--
Jesper Nilsson -- [email protected]