| From 3aaf4b15a4e3d742d2206a0ae15c7480caccc38e Mon Sep 17 00:00:00 2001 |
| From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| Date: Mon, 15 Jul 2013 13:36:39 +0200 |
| Subject: sh-pfc: Don't overallocate memory for the GPIO chip pins array |
| |
| The GPIO driver uses an array of sh_pfc_gpio_pin structures to store |
| per-GPIO pin data. The array size is miscomputed at allocation time by |
| using the number of the last pin instead of the number of pins. When the |
| pin space contains holes this leads to memory overallocation. Fix it. |
| |
| Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| Tested-by: Yusuke Goda <yusuke.goda.sx@renesas.com> |
| (cherry picked from commit a1a3580cb322f71cc5aa7e9180ffb6df609b530d) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| drivers/pinctrl/sh-pfc/gpio.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/pinctrl/sh-pfc/gpio.c b/drivers/pinctrl/sh-pfc/gpio.c |
| index d37efa7d..3620bd84 100644 |
| --- a/drivers/pinctrl/sh-pfc/gpio.c |
| +++ b/drivers/pinctrl/sh-pfc/gpio.c |
| @@ -224,8 +224,8 @@ static int gpio_pin_setup(struct sh_pfc_chip *chip) |
| struct gpio_chip *gc = &chip->gpio_chip; |
| int ret; |
| |
| - chip->pins = devm_kzalloc(pfc->dev, pfc->nr_pins * sizeof(*chip->pins), |
| - GFP_KERNEL); |
| + chip->pins = devm_kzalloc(pfc->dev, pfc->info->nr_pins * |
| + sizeof(*chip->pins), GFP_KERNEL); |
| if (chip->pins == NULL) |
| return -ENOMEM; |
| |
| -- |
| 1.8.4.3.gca3854a |
| |