linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] IXP4xx: Ensure index is positive
@ 2009-11-03 19:10 Roel Kluin
  2009-11-03 20:27 ` Karl Hiramoto
  0 siblings, 1 reply; 5+ messages in thread
From: Roel Kluin @ 2009-11-03 19:10 UTC (permalink / raw)
  To: linux-arm-kernel

The indexes are signed, make sure they are not negative
when we read the array elements.

Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
---
 arch/arm/mach-ixp4xx/common.c     |    2 +-
 arch/arm/mach-ixp4xx/ixp4xx_npe.c |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c
index cfd52fb..2df77bc 100644
--- a/arch/arm/mach-ixp4xx/common.c
+++ b/arch/arm/mach-ixp4xx/common.c
@@ -119,7 +119,7 @@ EXPORT_SYMBOL(gpio_to_irq);
 
 int irq_to_gpio(int irq)
 {
-	int gpio = (irq < 32) ? irq2gpio[irq] : -EINVAL;
+	int gpio = (irq < 32 && irq >= 0) ? irq2gpio[irq] : -EINVAL;
 
 	if (gpio == -1)
 		return -EINVAL;
diff --git a/arch/arm/mach-ixp4xx/ixp4xx_npe.c b/arch/arm/mach-ixp4xx/ixp4xx_npe.c
index 47ac69c..30e1456 100644
--- a/arch/arm/mach-ixp4xx/ixp4xx_npe.c
+++ b/arch/arm/mach-ixp4xx/ixp4xx_npe.c
@@ -667,7 +667,7 @@ err:
 
 struct npe *npe_request(int id)
 {
-	if (id < NPE_COUNT)
+	if (id >= 0 && id < NPE_COUNT)
 		if (npe_tab[id].valid)
 			if (try_module_get(THIS_MODULE))
 				return &npe_tab[id];

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH] IXP4xx: Ensure index is positive
  2009-11-03 19:10 [PATCH] IXP4xx: Ensure index is positive Roel Kluin
@ 2009-11-03 20:27 ` Karl Hiramoto
  2009-11-03 21:23   ` Krzysztof Halasa
  0 siblings, 1 reply; 5+ messages in thread
From: Karl Hiramoto @ 2009-11-03 20:27 UTC (permalink / raw)
  To: linux-arm-kernel

Roel Kluin wrote:
> The indexes are signed, make sure they are not negative
> when we read the array elements.
>
> Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
> ---
>  arch/arm/mach-ixp4xx/common.c     |    2 +-
>  arch/arm/mach-ixp4xx/ixp4xx_npe.c |    2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c
> index cfd52fb..2df77bc 100644
> --- a/arch/arm/mach-ixp4xx/common.c
> +++ b/arch/arm/mach-ixp4xx/common.c
> @@ -119,7 +119,7 @@ EXPORT_SYMBOL(gpio_to_irq);
>  
>  int irq_to_gpio(int irq)
>  {
> -	int gpio = (irq < 32) ? irq2gpio[irq] : -EINVAL;
> +	int gpio = (irq < 32 && irq >= 0) ? irq2gpio[irq] : -EINVAL;
>  
>  	if (gpio == -1)
>  		return -EINVAL;
> diff --git a/arch/arm/mach-ixp4xx/ixp4xx_npe.c b/arch/arm/mach-ixp4xx/ixp4xx_npe.c
> index 47ac69c..30e1456 100644
> --- a/arch/arm/mach-ixp4xx/ixp4xx_npe.c
> +++ b/arch/arm/mach-ixp4xx/ixp4xx_npe.c
> @@ -667,7 +667,7 @@ err:
>  
>  struct npe *npe_request(int id)
>  {
> -	if (id < NPE_COUNT)
> +	if (id >= 0 && id < NPE_COUNT)
>  		if (npe_tab[id].valid)
>  			if (try_module_get(THIS_MODULE))
>  				return &npe_tab[id];
>
>   
changing npe_request() to unsigned would probably be better and  not add 
to bloat.   If your calling these functions with negative arguments, 
your code is buggy then.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH] IXP4xx: Ensure index is positive
  2009-11-03 20:27 ` Karl Hiramoto
@ 2009-11-03 21:23   ` Krzysztof Halasa
  2009-11-03 22:05     ` Roel Kluin
  0 siblings, 1 reply; 5+ messages in thread
From: Krzysztof Halasa @ 2009-11-03 21:23 UTC (permalink / raw)
  To: linux-arm-kernel

Karl Hiramoto <karl@hiramoto.org> writes:

>> +++ b/arch/arm/mach-ixp4xx/common.c
>> @@ -119,7 +119,7 @@ EXPORT_SYMBOL(gpio_to_irq);
>>   int irq_to_gpio(int irq)
>>  {
>> -	int gpio = (irq < 32) ? irq2gpio[irq] : -EINVAL;
>> +	int gpio = (irq < 32 && irq >= 0) ? irq2gpio[irq] : -EINVAL;
>>   	if (gpio == -1)
>>  		return -EINVAL;

>> +++ b/arch/arm/mach-ixp4xx/ixp4xx_npe.c
>> @@ -667,7 +667,7 @@ err:
>>   struct npe *npe_request(int id)
>>  {
>> -	if (id < NPE_COUNT)
>> +	if (id >= 0 && id < NPE_COUNT)

> changing npe_request() to unsigned would probably be better and  not
> add to bloat.   If your calling these functions with negative
> arguments, your code is buggy then.

Right. Both files in fact.

Even the id < NPE_COUNT test is probably not needed but I can imagine
someone lowering NPE_COUNT. Negative values are unreasonable (though
unsigned type make this unrelevant, of course).
-- 
Krzysztof Halasa

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH] IXP4xx: Ensure index is positive
  2009-11-03 21:23   ` Krzysztof Halasa
@ 2009-11-03 22:05     ` Roel Kluin
  2009-11-05 13:04       ` Krzysztof Halasa
  0 siblings, 1 reply; 5+ messages in thread
From: Roel Kluin @ 2009-11-03 22:05 UTC (permalink / raw)
  To: linux-arm-kernel

The indexes were signed, so negatives were possible.

Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
---
Op 03-11-09 22:23, Krzysztof Halasa schreef:
> Karl Hiramoto <karl@hiramoto.org> writes:

>> changing npe_request() to unsigned would probably be better

> Right. Both files in fact.
> 
> Even the id < NPE_COUNT test is probably not needed but I can imagine
> someone lowering NPE_COUNT. Negative values are unreasonable (though
> unsigned type make this unrelevant, of course).

 arch/arm/mach-ixp4xx/common.c            |    2 +-
 arch/arm/mach-ixp4xx/include/mach/gpio.h |    2 +-
 arch/arm/mach-ixp4xx/include/mach/npe.h  |    2 +-
 arch/arm/mach-ixp4xx/ixp4xx_npe.c        |    2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

Is this ok?

diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c
index cfd52fb..3bbf40f 100644
--- a/arch/arm/mach-ixp4xx/common.c
+++ b/arch/arm/mach-ixp4xx/common.c
@@ -117,7 +117,7 @@ int gpio_to_irq(int gpio)
 }
 EXPORT_SYMBOL(gpio_to_irq);
 
-int irq_to_gpio(int irq)
+int irq_to_gpio(unsigned int irq)
 {
 	int gpio = (irq < 32) ? irq2gpio[irq] : -EINVAL;
 
diff --git a/arch/arm/mach-ixp4xx/include/mach/gpio.h b/arch/arm/mach-ixp4xx/include/mach/gpio.h
index cd5aec2..a5f87de 100644
--- a/arch/arm/mach-ixp4xx/include/mach/gpio.h
+++ b/arch/arm/mach-ixp4xx/include/mach/gpio.h
@@ -70,7 +70,7 @@ static inline void gpio_set_value(unsigned gpio, int value)
 #include <asm-generic/gpio.h>			/* cansleep wrappers */
 
 extern int gpio_to_irq(int gpio);
-extern int irq_to_gpio(int gpio);
+extern int irq_to_gpio(unsigned int irq);
 
 #endif
 
diff --git a/arch/arm/mach-ixp4xx/include/mach/npe.h b/arch/arm/mach-ixp4xx/include/mach/npe.h
index 37d0511..e320db2 100644
--- a/arch/arm/mach-ixp4xx/include/mach/npe.h
+++ b/arch/arm/mach-ixp4xx/include/mach/npe.h
@@ -33,7 +33,7 @@ int npe_send_message(struct npe *npe, const void *msg, const char *what);
 int npe_recv_message(struct npe *npe, void *msg, const char *what);
 int npe_send_recv_message(struct npe *npe, void *msg, const char *what);
 int npe_load_firmware(struct npe *npe, const char *name, struct device *dev);
-struct npe *npe_request(int id);
+struct npe *npe_request(unsigned id);
 void npe_release(struct npe *npe);
 
 #endif /* __IXP4XX_NPE_H */
diff --git a/arch/arm/mach-ixp4xx/ixp4xx_npe.c b/arch/arm/mach-ixp4xx/ixp4xx_npe.c
index 47ac69c..e8bb257 100644
--- a/arch/arm/mach-ixp4xx/ixp4xx_npe.c
+++ b/arch/arm/mach-ixp4xx/ixp4xx_npe.c
@@ -665,7 +665,7 @@ err:
 }
 
 
-struct npe *npe_request(int id)
+struct npe *npe_request(unsigned id)
 {
 	if (id < NPE_COUNT)
 		if (npe_tab[id].valid)

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH] IXP4xx: Ensure index is positive
  2009-11-03 22:05     ` Roel Kluin
@ 2009-11-05 13:04       ` Krzysztof Halasa
  0 siblings, 0 replies; 5+ messages in thread
From: Krzysztof Halasa @ 2009-11-05 13:04 UTC (permalink / raw)
  To: linux-arm-kernel

Roel Kluin <roel.kluin@gmail.com> writes:

> +++ b/arch/arm/mach-ixp4xx/common.c
> @@ -117,7 +117,7 @@ int gpio_to_irq(int gpio)
>  }
>  EXPORT_SYMBOL(gpio_to_irq);
>  
> -int irq_to_gpio(int irq)
> +int irq_to_gpio(unsigned int irq)
>  {
>  	int gpio = (irq < 32) ? irq2gpio[irq] : -EINVAL;
>  
> diff --git a/arch/arm/mach-ixp4xx/include/mach/gpio.h b/arch/arm/mach-ixp4xx/include/mach/gpio.h
> index cd5aec2..a5f87de 100644
> --- a/arch/arm/mach-ixp4xx/include/mach/gpio.h
> +++ b/arch/arm/mach-ixp4xx/include/mach/gpio.h
> @@ -70,7 +70,7 @@ static inline void gpio_set_value(unsigned gpio, int value)
>  #include <asm-generic/gpio.h>			/* cansleep wrappers */
>  
>  extern int gpio_to_irq(int gpio);
> -extern int irq_to_gpio(int gpio);
> +extern int irq_to_gpio(unsigned int irq);
>  
>  #endif
>  
> diff --git a/arch/arm/mach-ixp4xx/include/mach/npe.h b/arch/arm/mach-ixp4xx/include/mach/npe.h
> index 37d0511..e320db2 100644
> --- a/arch/arm/mach-ixp4xx/include/mach/npe.h
> +++ b/arch/arm/mach-ixp4xx/include/mach/npe.h
> @@ -33,7 +33,7 @@ int npe_send_message(struct npe *npe, const void *msg, const char *what);
>  int npe_recv_message(struct npe *npe, void *msg, const char *what);
>  int npe_send_recv_message(struct npe *npe, void *msg, const char *what);
>  int npe_load_firmware(struct npe *npe, const char *name, struct device *dev);
> -struct npe *npe_request(int id);
> +struct npe *npe_request(unsigned id);
>  void npe_release(struct npe *npe);
>  
>  #endif /* __IXP4XX_NPE_H */
> diff --git a/arch/arm/mach-ixp4xx/ixp4xx_npe.c b/arch/arm/mach-ixp4xx/ixp4xx_npe.c
> index 47ac69c..e8bb257 100644
> --- a/arch/arm/mach-ixp4xx/ixp4xx_npe.c
> +++ b/arch/arm/mach-ixp4xx/ixp4xx_npe.c
> @@ -665,7 +665,7 @@ err:
>  }
>  
>  
> -struct npe *npe_request(int id)
> +struct npe *npe_request(unsigned id)

It looks good, thanks a lot.
-- 
Krzysztof Halasa

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2009-11-05 13:04 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-03 19:10 [PATCH] IXP4xx: Ensure index is positive Roel Kluin
2009-11-03 20:27 ` Karl Hiramoto
2009-11-03 21:23   ` Krzysztof Halasa
2009-11-03 22:05     ` Roel Kluin
2009-11-05 13:04       ` Krzysztof Halasa

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).