nouveau: off by one in nv50_gpio_location()
Subsystems (4)
PATCH 1/1 nouveau: off by one in nv50_gpio_location()
If "gpio->line" is 32 then "nv50_gpio_reg[gpio->line >> 3]" reads past the end of the array.
drivers/gpu/drm/nouveau/nv50_gpio.c +1 -1
@@ -31,7 +31,7 @@ nv50_gpio_location(struct dcb_gpio_entry *gpio, uint32_t *reg, uint32_t *shift) {const uint32_t nv50_gpio_reg[4 ] = {0xe104 ,0xe108 ,0xe280 ,0xe284 }; -if (gpio->line >32 ) +if (gpio->line >=32 )return -EINVAL ; *reg = nv50_gpio_reg[gpio->line >>3 ];
------------------------------------------------------------------------------
--
Quoted 2 lines · Dan Carpenter
If "
gpio->line" is 32 then "nv50_gpio_reg[gpio->line >> 3]" reads past the end of the array.
Thanks, picked up in the nouveau tree.
Quoted 8 lines
Signed-off-by Dan Carpenter <[email protected]>drivers/gpu/drm/nouveau/nv50_gpio.c +0
-0
drivers/gpu/drm/nouveau/nv50_gpio.c nv50_gpio_location(struct dcb_gpio_entry *gpio, uint32_t *reg, uint32_t *shift) · line 37
Quoted 8 lines
drivers/gpu/drm/nouveau/nv50_gpio.c +1
-1@@ -31,7 +31,7 @@ nv50_gpio_location(struct dcb_gpio_entry *gpio, uint32_t *reg, uint32_t *shift) {const uint32_t nv50_gpio_reg[4 ] = {0xe104 ,0xe108 ,0xe280 ,0xe284 }; -if (gpio->line >32 ) +if (gpio->line >=32 )return -EINVAL ; *reg = nv50_gpio_reg[gpio->line >>3 ];
------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
--