Messages in this thread Patch in this message |  | | From | Marco Scardovi <> | | Subject | [PATCH v2 3/3] [PATCH 3/3] gpio: acpi: modernize resource management using cleanup.h | | Date | Wed, 6 May 2026 14:35:36 +0200 |
| |
--- drivers/gpio/gpiolib-acpi-core.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-)
diff --git a/drivers/gpio/gpiolib-acpi-core.c b/drivers/gpio/gpiolib-acpi-core.c index b6accbaba04d..7b6476b90f13 100644 --- a/drivers/gpio/gpiolib-acpi-core.c +++ b/drivers/gpio/gpiolib-acpi-core.c @@ -1126,7 +1126,7 @@ acpi_gpio_adr_space_handler(u32 function, acpi_physical_address address, u16 word, shift; bool found; - mutex_lock(&achip->conn_lock); + guard(mutex)(&achip->conn_lock); found = false; list_for_each_entry(conn, &achip->conns, node) { @@ -1158,17 +1158,15 @@ acpi_gpio_adr_space_handler(u32 function, acpi_physical_address address, if (!found) { desc = acpi_request_own_gpiod(chip, agpio, i, "ACPI:OpRegion"); if (IS_ERR(desc)) { - mutex_unlock(&achip->conn_lock); status = AE_ERROR; - goto out; + break; } conn = kzalloc_obj(*conn); if (!conn) { gpiochip_free_own_desc(desc); - mutex_unlock(&achip->conn_lock); status = AE_NO_MEMORY; - goto out; + break; } conn->pin = pin; @@ -1176,8 +1174,6 @@ acpi_gpio_adr_space_handler(u32 function, acpi_physical_address address, list_add_tail(&conn->node, &achip->conns); } - mutex_unlock(&achip->conn_lock); - /* * For the cases when OperationRegion() consists of more than * 64 bits calculate the word and bit shift to use that one to @@ -1196,8 +1192,6 @@ acpi_gpio_adr_space_handler(u32 function, acpi_physical_address address, } } -out: - ACPI_FREE(ares); return status; } -- 2.54.0
|  |