Received: by 2002:a25:683:0:0:0:0:0 with SMTP id 125csp1784382ybg; Thu, 4 Jun 2020 20:05:11 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyHnAMqdO8+L2rPwPSWjh50axQby1UzkNJD9xD5a5LuAEi8da2K2BYO9NPQ1PT/t5K7ny/U X-Received: by 2002:a17:906:f189:: with SMTP id gs9mr6517692ejb.203.1591326311631; Thu, 04 Jun 2020 20:05:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1591326311; cv=none; d=google.com; s=arc-20160816; b=ME1K3kqx+iB0S8fGOVUgtyzmP1beDlAa9qP/8JjHls/xKoIbfxI/vQjAYN4Qj1yqO5 WVgJ4y02jHDjWdUJ4t713fejVaWBWmJYKU4D4mXRguJz21Sq9EPUInShhQda00A9mJ1J TvfLZUGazjqjb4thG6sLgQU9wN7BMblZxYw1au9U8nJl0ZATx418bOgOGwO4D/Ig4ve1 B/HiITmvsQhMATGQIOYHyyqLFUjAQQH3jH4O1e9h8eAneOOnUFVHhcncG4OOeLDE9Zr5 toXETbMQJxv6qIK9Hn8ojMWYJCllMSzQFm9jiTvdeCF8LgFW6GFDDPGc5s5vk+fA4qO6 T3YQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature; bh=dMlRURD0AMV5m7nsP7Rq9ppWitDs8+6K6/cTTPcy4TM=; b=Lu2kCtlj8WR6xlo60AYs4U0G/HWuhLmCmrjo7/l/qZ4niwmmipGbx3t9dV1nMW2X9x E63jiH+ln4jTpUreKn3GRg4PgfhicxHvhUa1qVz8FNxsACyAXjU6sPTuqtymB1qDlK9o 3or+GFCfJjPglpkf1+coolXx0FTbY0RT39g7dV2OuqmHRHavM+cUTxdphp88yfrp6V8x IJExxvlUb6jt4KBBAtXMNimnTN85wh8DEwSb86gyR4QOXhblSy9DPX6Kp0LKWGEwZk8e mLAwSOUKU9AdP/JCNWMsiRnTiWEzbE67N/yfv+uZ81gv6DGTxwJJuWr+viQGuZVtywL3 Zuow== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=VtUTM0qn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n2si2483764ejc.110.2020.06.04.20.04.48; Thu, 04 Jun 2020 20:05:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=VtUTM0qn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726024AbgFEDBC (ORCPT + 99 others); Thu, 4 Jun 2020 23:01:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56632 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725954AbgFEDBB (ORCPT ); Thu, 4 Jun 2020 23:01:01 -0400 Received: from mail-il1-x141.google.com (mail-il1-x141.google.com [IPv6:2607:f8b0:4864:20::141]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 86627C08C5C0; Thu, 4 Jun 2020 20:01:00 -0700 (PDT) Received: by mail-il1-x141.google.com with SMTP id i1so6952223ils.11; Thu, 04 Jun 2020 20:01:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=dMlRURD0AMV5m7nsP7Rq9ppWitDs8+6K6/cTTPcy4TM=; b=VtUTM0qn7CTaNao5hjVsEXiwUgUnBhKH925UHNI+uAyzcwMhfsq36V6iHXDGgcJKoD BmZMuTPjd9qeP5i4yspQEsrfNpGIHzHqBmPEbPaj8JDY1CHTrro1SnYbTKGwd3iwlb5v nIiJs1yhqmW/KwPIgKTPkLP5NitRPEPr9fHQ6nf99Ey2lNGBUQIynVyjBbUpy4S2fHF2 JrnHQi+vt6cNU9JKRRsspY4VihzLZisqneNP1zJMXzRz8gdNX2MzF7mnYHOALiu++cE5 v8+CPyH6lYqYiPIKJKq7+40FZAK9eSC3z91rlxQzzQv62XJaNlWlZX1FXvxLQq8XdYn0 d1rg== 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=dMlRURD0AMV5m7nsP7Rq9ppWitDs8+6K6/cTTPcy4TM=; b=qkVeMHC9wddjWOwLnsoSgHq0rrASVyX4N3z5+6wMDZ9GcfMdGoENm/6vbcxDafwAq1 NhdRWKCwiZe19ajmMd8PQvbnDe/C9DW2eOUaOXSFIwbp/9uEFGMPvEE13GFiMEdF1rzM EY17mc2ap+a1ZtSW6RrUY/81SxEtr3S1e7iyGEqywWXVsZLbOo7x66MW5Xym85EPX6uM 5Fs7W4oQcHWbF1BlgL69jigt3m54WN8GuqP3B9H0yHAcyOcC+IYgaxRVlZ1wOVwHHY4j ga/kn7rKy9LALO+1ELcFC9Wx6yTxvRKeWYkWojvtzC0iDRGc8yg0om0Bhdf82ohdqW8w R8Yg== X-Gm-Message-State: AOAM532m83aOwvU5QGQvsnylnGHL//wCoPlFxOzPuXWBjfqYGACELfYX SgqN4mwKCJgsE6Oe1bHgmAg= X-Received: by 2002:a92:b603:: with SMTP id s3mr6921538ili.175.1591326059820; Thu, 04 Jun 2020 20:00:59 -0700 (PDT) Received: from cs-u-kase.dtc.umn.edu (cs-u-kase.cs.umn.edu. [160.94.64.2]) by smtp.googlemail.com with ESMTPSA id d11sm727854iod.11.2020.06.04.20.00.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2020 20:00:59 -0700 (PDT) From: Navid Emamdoost To: Linus Walleij , Bartosz Golaszewski , patches@opensource.cirrus.com, linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org Cc: emamd001@umn.edu, wu000273@umn.edu, kjlu@umn.edu, smccaman@umn.edu, Navid Emamdoost Subject: [PATCH] gpio: arizona: put pm_runtime in case of failure Date: Thu, 4 Jun 2020 22:00:52 -0500 Message-Id: <20200605030052.78235-1-navid.emamdoost@gmail.com> X-Mailer: git-send-email 2.17.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Calling pm_runtime_get_sync increments the counter even in case of failure, causing incorrect ref count if pm_runtime_put is not called in error handling paths. Call pm_runtime_put if pm_runtime_get_sync fails. Signed-off-by: Navid Emamdoost --- drivers/gpio/gpio-arizona.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/gpio/gpio-arizona.c b/drivers/gpio/gpio-arizona.c index 7520a13b4c7c..5bda38e0780f 100644 --- a/drivers/gpio/gpio-arizona.c +++ b/drivers/gpio/gpio-arizona.c @@ -64,6 +64,7 @@ static int arizona_gpio_get(struct gpio_chip *chip, unsigned offset) ret = pm_runtime_get_sync(chip->parent); if (ret < 0) { dev_err(chip->parent, "Failed to resume: %d\n", ret); + pm_runtime_put_autosuspend(chip->parent); return ret; } @@ -72,12 +73,15 @@ static int arizona_gpio_get(struct gpio_chip *chip, unsigned offset) if (ret < 0) { dev_err(chip->parent, "Failed to drop cache: %d\n", ret); + pm_runtime_put_autosuspend(chip->parent); return ret; } ret = regmap_read(arizona->regmap, reg, &val); - if (ret < 0) + if (ret < 0) { + pm_runtime_put_autosuspend(chip->parent); return ret; + } pm_runtime_mark_last_busy(chip->parent); pm_runtime_put_autosuspend(chip->parent); -- 2.17.1