From patchwork Tue Jan 2 10:23:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linus Walleij X-Patchwork-Id: 854500 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-gpio-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="Lyh4fXwr"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3z9qvR6d18z9sRW for ; Tue, 2 Jan 2018 21:25:23 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751938AbeABKZW (ORCPT ); Tue, 2 Jan 2018 05:25:22 -0500 Received: from mail-lf0-f68.google.com ([209.85.215.68]:33972 "EHLO mail-lf0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751546AbeABKZV (ORCPT ); Tue, 2 Jan 2018 05:25:21 -0500 Received: by mail-lf0-f68.google.com with SMTP id h140so4408970lfg.1 for ; Tue, 02 Jan 2018 02:25:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=LCGBbvqi2g05OQBsKYZaehrmGeo1aI6zgm0RP1F4UtM=; b=Lyh4fXwr6n2UZxUE3wJz0O9T4vViAaOFm3ZA6zNGT78rq4RIIxlDoK/GERqzziTYKL WxPFqDKmx52/e1XBmWsBbCAszmLQ41UYXSLuORwoleXZJJvSuoBhNrxbqEpnMaVi9RSd 7XFMaXWGs9xTEUAgyrwgMVvb3CJ9eyLrbLuLo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=LCGBbvqi2g05OQBsKYZaehrmGeo1aI6zgm0RP1F4UtM=; b=hD7vm8HYY9s/Q64h5BQpaX0ja/TjjsPIPYaZKFlaLqq5EPolFvWT+g7AaN5wo2VIMF I9BkTcNReC2oRHtpEkltBoVsFPA0GmwExPQ6OjCdUALfooM9EycUo9YcvRp6UkiBBDr3 C5CA9Q9oV2VxVqz0k7V2fUJbFzgw21zeESOwxgUGcjRC1SAyEA8Eew3M1Xxjuxtpr1ts wrEhT6qhLM4/MOAgwfsKaQwnP9hTY3R+f58RXLWR7FipZt2SXRrt3CiQe3mFGvJ69J5q Cc8gIi0Vxidwlo5tcRmOHy4wjiBH9c+lqv/Br3J7dogcpM3vIdkVF/9yvlyWti7cUTJq FSmg== X-Gm-Message-State: AKGB3mLchdvkWS+2AnNSAhrDK2tPfIrhCdT1l/pbnnS5Mq35FpdctGTb IcBN7AlEals3XlU7jJ1EXxX+Wv6bs4w= X-Google-Smtp-Source: ACJfBos064k7X/UHkGlUxuwjfyRKcSUNE2NDd6ov+o/QoX8nDAxnsc5nO+t2i7QIZzEyjIAIm2D/rQ== X-Received: by 10.46.91.79 with SMTP id p76mr27893326ljb.22.1514888719760; Tue, 02 Jan 2018 02:25:19 -0800 (PST) Received: from localhost.localdomain (c-cb7471d5.014-348-6c756e10.cust.bredbandsbolaget.se. [213.113.116.203]) by smtp.gmail.com with ESMTPSA id s195sm3454600lfs.77.2018.01.02.02.25.18 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 02 Jan 2018 02:25:19 -0800 (PST) From: Linus Walleij To: linux-gpio@vger.kernel.org Cc: Linus Walleij , Johan Hovold Subject: [PATCH] gpio: omap: Fix error path on chip init Date: Tue, 2 Jan 2018 11:23:14 +0100 Message-Id: <20180102102314.12906-1-linus.walleij@linaro.org> X-Mailer: git-send-email 2.14.3 Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org The error path was leaking a gpio_chip at one point. Cc: Johan Hovold Signed-off-by: Linus Walleij Reviewed-by: Johan Hovold --- drivers/gpio/gpio-omap.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c index e136d666f1e5..d83e8624964a 100644 --- a/drivers/gpio/gpio-omap.c +++ b/drivers/gpio/gpio-omap.c @@ -1104,7 +1104,8 @@ static int omap_gpio_chip_init(struct gpio_bank *bank, struct irq_chip *irqc) -1, 0, bank->width, 0); if (irq_base < 0) { dev_err(bank->chip.parent, "Couldn't allocate IRQ numbers\n"); - return -ENODEV; + ret = -ENODEV; + goto err_remove_chip; } #endif @@ -1122,8 +1123,8 @@ static int omap_gpio_chip_init(struct gpio_bank *bank, struct irq_chip *irqc) if (ret) { dev_err(bank->chip.parent, "Couldn't add irqchip to gpiochip %d\n", ret); - gpiochip_remove(&bank->chip); - return -ENODEV; + ret = -ENODEV; + goto err_remove_chip; } gpiochip_set_chained_irqchip(&bank->chip, irqc, bank->irq, NULL); @@ -1132,8 +1133,12 @@ static int omap_gpio_chip_init(struct gpio_bank *bank, struct irq_chip *irqc) omap_gpio_irq_handler, 0, dev_name(bank->chip.parent), bank); if (ret) - gpiochip_remove(&bank->chip); + goto err_remove_chip; + return 0; + +err_remove_chip: + gpiochip_remove(&bank->chip); return ret; }