aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpio/gpiolib-acpi.c
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2014-10-20 12:55:07 -0400
committerMark Brown <broonie@kernel.org>2014-10-20 13:27:32 -0400
commitb7a40242c82cd73cfcea305f23e67d068dd8401a (patch)
tree251b49d19cd7c371847ae1f951e1b537ca0e1c15 /drivers/gpio/gpiolib-acpi.c
parentd26833bfce5e56017bea9f1f50838f20e18e7b7e (diff)
parent9c6de47d53a3ce8df1642ae67823688eb98a190a (diff)
Merge branch 'fix/dw' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi into spi-dw
Conflicts: drivers/spi/spi-dw-mid.c
Diffstat (limited to 'drivers/gpio/gpiolib-acpi.c')
-rw-r--r--drivers/gpio/gpiolib-acpi.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpio/gpiolib-acpi.c b/drivers/gpio/gpiolib-acpi.c
index d62eaaa75397..687476fb39e3 100644
--- a/drivers/gpio/gpiolib-acpi.c
+++ b/drivers/gpio/gpiolib-acpi.c
@@ -377,8 +377,10 @@ acpi_gpio_adr_space_handler(u32 function, acpi_physical_address address,
377 struct gpio_chip *chip = achip->chip; 377 struct gpio_chip *chip = achip->chip;
378 struct acpi_resource_gpio *agpio; 378 struct acpi_resource_gpio *agpio;
379 struct acpi_resource *ares; 379 struct acpi_resource *ares;
380 int pin_index = (int)address;
380 acpi_status status; 381 acpi_status status;
381 bool pull_up; 382 bool pull_up;
383 int length;
382 int i; 384 int i;
383 385
384 status = acpi_buffer_to_resource(achip->conn_info.connection, 386 status = acpi_buffer_to_resource(achip->conn_info.connection,
@@ -400,7 +402,8 @@ acpi_gpio_adr_space_handler(u32 function, acpi_physical_address address,
400 return AE_BAD_PARAMETER; 402 return AE_BAD_PARAMETER;
401 } 403 }
402 404
403 for (i = 0; i < agpio->pin_table_length; i++) { 405 length = min(agpio->pin_table_length, (u16)(pin_index + bits));
406 for (i = pin_index; i < length; ++i) {
404 unsigned pin = agpio->pin_table[i]; 407 unsigned pin = agpio->pin_table[i];
405 struct acpi_gpio_connection *conn; 408 struct acpi_gpio_connection *conn;
406 struct gpio_desc *desc; 409 struct gpio_desc *desc;