Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp1190580pxu; Fri, 27 Nov 2020 01:43:45 -0800 (PST) X-Google-Smtp-Source: ABdhPJy//3DmZHqnrqWVEd1aVAKbJ0OCZyJc3zP5HuMcTyWgp5adt6/muTtY5g7DOZTDdqMPECJf X-Received: by 2002:a17:906:e15:: with SMTP id l21mr6715642eji.509.1606470224926; Fri, 27 Nov 2020 01:43:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1606470224; cv=none; d=google.com; s=arc-20160816; b=dexPpKmwiCJiWE1XN20bX42FIo54lfMZD9HPrA0LU8M4qBkQ9g1DHk9WN5hKvf2WuT /CPgmxmwG5/QKMPVPvmz+gIDkZxmfkhztPKGCAmXQViHqwp8TO4vnR3t9t48fajn4tKO nvG21kquAkeY0klYbYUw9xIwWRnnJOz9rp+ESHD0CT4QOx2qX6KytUz5Zj1lQhoNyB7m /OQXvx6tDOkOBy7Lx0s3hBNR+5Nw97GG4XHqTavNZk7zkgkdPYVxaXMBITn3pvT60BtW jl+Nq/a9a5Dh1PxfwR2z9FJl+s649aIJLAD/YsN4b417MrQASM0xxpSVokOmv/8nzkO9 dDdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=fjTWyq89KQ0l6e9vhba9NfF4gbC2/slBNEyfGuX4c0s=; b=TTB2N31A1BVgzCX02hAKIvTHeZwlFsxW2fvAkX9V0QSukp9AyEjK2x8N5iqiykdfZA K6kUCh2O/nVEL1FYIxd5neciFeINFYpGN04XzHbEM5dKzAlk6Ko1cA3xT/KV63pm2x7W NZkyXAVaeTSOfHyY/cw9+e8e7JlhjzQEf/J1f2Y2AE3UO0iI1aEB1VE2h8f60VLT83BJ J4M+lwfaCoYtXe8H5tla+nE2IYXp6SIuhu2U/vN9dxMKf7b8yRFZvSXypnuu5lW/nUbq vyQb/mGIWmyRteStMPxfPb+9sZchZLO8AxFWXw8gj5z9bFi1Qo0vmRi2iipuO2UnPyGx d17g== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c2si4377836edq.536.2020.11.27.01.43.22; Fri, 27 Nov 2020 01:43:44 -0800 (PST) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728862AbgK0Jky (ORCPT + 99 others); Fri, 27 Nov 2020 04:40:54 -0500 Received: from szxga05-in.huawei.com ([45.249.212.191]:8603 "EHLO szxga05-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728740AbgK0Jkm (ORCPT ); Fri, 27 Nov 2020 04:40:42 -0500 Received: from DGGEMS411-HUB.china.huawei.com (unknown [172.30.72.58]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4Cj8k321tPzLwPQ; Fri, 27 Nov 2020 17:40:11 +0800 (CST) Received: from localhost.localdomain.localdomain (10.175.113.25) by DGGEMS411-HUB.china.huawei.com (10.3.19.211) with Microsoft SMTP Server id 14.3.487.0; Fri, 27 Nov 2020 17:40:29 +0800 From: Qinglang Miao To: Linus Walleij , Bartosz Golaszewski , Michal Simek CC: , , , Qinglang Miao Subject: [PATCH] gpio: zynq: fix reference leak in zynq_gpio functions Date: Fri, 27 Nov 2020 17:44:45 +0800 Message-ID: <20201127094445.121232-1-miaoqinglang@huawei.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [10.175.113.25] X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org pm_runtime_get_sync will increment pm usage counter even it failed. Forgetting to putting operation will result in a reference leak here. A new function pm_runtime_resume_and_get is introduced in [0] to keep usage counter balanced. So We fix the reference leak by replacing it with new funtion. [0] dd8088d5a896 ("PM: runtime: Add pm_runtime_resume_and_get to deal with usage counter") Fixes: c2df3de0d07e ("gpio: zynq: properly support runtime PM for GPIO used as interrupts") Reported-by: Hulk Robot Signed-off-by: Qinglang Miao --- drivers/gpio/gpio-zynq.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpio/gpio-zynq.c b/drivers/gpio/gpio-zynq.c index 0b5a17ab9..3521c1dc3 100644 --- a/drivers/gpio/gpio-zynq.c +++ b/drivers/gpio/gpio-zynq.c @@ -574,7 +574,7 @@ static int zynq_gpio_irq_reqres(struct irq_data *d) struct gpio_chip *chip = irq_data_get_irq_chip_data(d); int ret; - ret = pm_runtime_get_sync(chip->parent); + ret = pm_runtime_resume_and_get(chip->parent); if (ret < 0) return ret; @@ -942,7 +942,7 @@ static int zynq_gpio_probe(struct platform_device *pdev) pm_runtime_set_active(&pdev->dev); pm_runtime_enable(&pdev->dev); - ret = pm_runtime_get_sync(&pdev->dev); + ret = pm_runtime_resume_and_get(&pdev->dev); if (ret < 0) goto err_pm_dis; -- 2.23.0