aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/kernel/bfin_gpio.c
diff options
context:
space:
mode:
authorBarry Song <barry.song@analog.com>2009-09-16 00:36:29 -0400
committerMike Frysinger <vapier@gentoo.org>2009-12-15 00:13:46 -0500
commit89e84eeace5924f29a4f8f25cce9fcb083969974 (patch)
tree95f2471d436918a2673c2a636594ea6c119210a5 /arch/blackfin/kernel/bfin_gpio.c
parent298571249a1990cd3c6c6ab40250a4a9c18ab5d1 (diff)
Blackfin: add some bounds checking to peripheral_request
The requested peripheral is turned into an index into some state arrays, so make sure the calculated index doesn't exceed the index. This occurs when using bogus pin values or the define headers are screwed up. Now we'll notice right away that something needs fixing instead of trying to track down random memory corruption. Signed-off-by: Barry Song <barry.song@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'arch/blackfin/kernel/bfin_gpio.c')
-rw-r--r--arch/blackfin/kernel/bfin_gpio.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/blackfin/kernel/bfin_gpio.c b/arch/blackfin/kernel/bfin_gpio.c
index 22705eeff34f..c4161e03df78 100644
--- a/arch/blackfin/kernel/bfin_gpio.c
+++ b/arch/blackfin/kernel/bfin_gpio.c
@@ -762,6 +762,8 @@ int peripheral_request(unsigned short per, const char *label)
762 if (!(per & P_DEFINED)) 762 if (!(per & P_DEFINED))
763 return -ENODEV; 763 return -ENODEV;
764 764
765 BUG_ON(ident >= MAX_RESOURCES);
766
765 local_irq_save_hw(flags); 767 local_irq_save_hw(flags);
766 768
767 /* If a pin can be muxed as either GPIO or peripheral, make 769 /* If a pin can be muxed as either GPIO or peripheral, make