Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp718315ybt; Sat, 13 Jun 2020 20:07:50 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxkbq6wU2RtbuhABLm3gtwwXKcYG6wN21NO0rljanKqK5kOIu9xMKILYnWnLIcXYPHLeg6X X-Received: by 2002:a17:906:81d7:: with SMTP id e23mr20337776ejx.462.1592104070679; Sat, 13 Jun 2020 20:07:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592104070; cv=none; d=google.com; s=arc-20160816; b=0hjdxd/3zNgIWIOqn6oSahrk+L3ps9M35Vj4KyZKp83dvU7sYYcz5/UfWptIfQ29O9 A+sQH1kGv8n/s4KQybsL0R09uxdw3odR4LAsCb+i0znZCzOSZ8hGhcJhjtPRUL2FSgd1 gM8ZU9wwe4Cz6Dm5Tg+3ipor1AHov6ApufzxkEsZY3v2broRt70pufZNhYxI40lkslO1 2YkugCl4cY8qkvhrGs1C6JJ+RZck1YVjJkfQFOyAf25DObIC3J82RX5m6Zr8j0v9Vbng VSuDN6a9GtoptAmBrCnK+QY/kXRqRBa58vvJ1DshxIkXy0tXw6zG/LXGx+Uj+4wDWdrw w8IA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature:dkim-filter :dmarc-filter; bh=6RWcchMQUTnXRjfjU8MBgF+NaxmL7vStwB+9xEzccB8=; b=wOcn9LKN6CbY7r6xi3hb8sW1DeT2ci98liyz7WD1gxTyepIoVzLG4uPzBy14MIyru/ dwdiZeGFGwOWrXeqdjrFD5CW5JyAPkMR0KV2/scoHGwvrV3cDyn6nE08CLx3qQCwg8vj ivxGDpdUaJ0T9vwR5jC63ys4TqZMmM2DLQnIztkC9R1w72A0MywpPFim2KGm7DFRoTwk 7U8iw0qc3Cspmduz5y9D/iWUO9gfh5cDAHn8XYDukMvrMZcs66ofwvK/+Ne52F7ugaY5 vvrU1b6ts9KBucQD+Kl6CQM14bpgNZ7tN60kbESNE/2ktkrkvIo4XN0b1/V1jU7YxZr9 Tthg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@umn.edu header.s=google header.b=jLMIfC3L; 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=QUARANTINE sp=NONE dis=NONE) header.from=umn.edu Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o11si6216673edv.414.2020.06.13.20.07.27; Sat, 13 Jun 2020 20:07:50 -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=@umn.edu header.s=google header.b=jLMIfC3L; 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=QUARANTINE sp=NONE dis=NONE) header.from=umn.edu Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726600AbgFNDFl (ORCPT + 99 others); Sat, 13 Jun 2020 23:05:41 -0400 Received: from mta-p5.oit.umn.edu ([134.84.196.205]:33370 "EHLO mta-p5.oit.umn.edu" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726460AbgFNDFk (ORCPT ); Sat, 13 Jun 2020 23:05:40 -0400 Received: from localhost (unknown [127.0.0.1]) by mta-p5.oit.umn.edu (Postfix) with ESMTP id 49kzqQ3dRzz9vYRT for ; Sun, 14 Jun 2020 03:05:38 +0000 (UTC) X-Virus-Scanned: amavisd-new at umn.edu Received: from mta-p5.oit.umn.edu ([127.0.0.1]) by localhost (mta-p5.oit.umn.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dcQVtSrJnP-F for ; Sat, 13 Jun 2020 22:05:38 -0500 (CDT) Received: from mail-io1-f70.google.com (mail-io1-f70.google.com [209.85.166.70]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mta-p5.oit.umn.edu (Postfix) with ESMTPS id 49kzqQ1sw0z9vYRS for ; Sat, 13 Jun 2020 22:05:38 -0500 (CDT) DMARC-Filter: OpenDMARC Filter v1.3.2 mta-p5.oit.umn.edu 49kzqQ1sw0z9vYRS DKIM-Filter: OpenDKIM Filter v2.11.0 mta-p5.oit.umn.edu 49kzqQ1sw0z9vYRS Received: by mail-io1-f70.google.com with SMTP id v14so8970348iob.11 for ; Sat, 13 Jun 2020 20:05:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=umn.edu; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=6RWcchMQUTnXRjfjU8MBgF+NaxmL7vStwB+9xEzccB8=; b=jLMIfC3LZ8Py+m5+WvjpfVMtIgms+TIjE9xznz3oTHlHIBJPK6CM7jOKCdSCC61UlM siLADkMA/mBmDJSyMe4te30jEuC22gf3CtpjcynC2s9Dx7nqTM8mulR6un1EOuoz0vjC zpSLKTstk5jP9pmgS9JaxjMBlrbaUIhht1611dUyaYpv/cEdes/0U+DnbrWQCOz+zxOP ym4fwA3wOLvT+tklF/ZO1/biKXBih5e0FQb4kxTnriBCq6z45hI+uHQheuT/Y+PsSYGP rbtrry+QcU/9/g7gEvySAgzyye+QjQdkgWp//3aR9zjJxT+pRxQDRIrbbKi3ui8Vt9ex KkZQ== 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:mime-version :content-transfer-encoding; bh=6RWcchMQUTnXRjfjU8MBgF+NaxmL7vStwB+9xEzccB8=; b=dyYjjFuqh6AM8Z4hYb5hVpDf/umm9qhqqmfAGrI9lL3/jjoOOS4rl8dCd42oFHC1oU Zkq6EvV3K61sM5qyQtEpRgq37473UC2liJpRIVgjcioahhhIHvrAnS+Ne/EVB1W4sPMj EVqXoeAf2LvjXgRBFHSsrFLh72iLCa236zFqGbUbrYrn53ehB+obg4chDAX9J27L8w4q MaO3IM8MWK1kSHSkg3k1bkd8n2W4e6H0zL1Daab4tPQLu7m4ImU4oCDPGfodRQyxb2dS H1ntCV06ClxgSpN4E0aAQOJbmjLV8uhtL6/N8vF7uq8MBx2kEl+NQUoAAGz1enBvC9Da o9Lw== X-Gm-Message-State: AOAM533jtP+3wuuaKR3wJFcYEvEGOuw9z0TMyBkWewNp6szfxYh5UoWV PhFGZ/CuO+Yyhn2Fp0e7Y6GxhcxLUjm5HLoC59eyLYDQgOCkI+LMwy2GfCCdrU4+UPaK7AOkAYH Mid0Rgm57ClXg7FQ2PANfiILwBylc X-Received: by 2002:a92:7104:: with SMTP id m4mr20895002ilc.87.1592103937847; Sat, 13 Jun 2020 20:05:37 -0700 (PDT) X-Received: by 2002:a92:7104:: with SMTP id m4mr20894981ilc.87.1592103937588; Sat, 13 Jun 2020 20:05:37 -0700 (PDT) Received: from syssec1.cs.umn.edu ([2607:ea00:101:3c74:49fa:9c47:e40b:9c40]) by smtp.gmail.com with ESMTPSA id t14sm5501737ilp.73.2020.06.13.20.05.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Jun 2020 20:05:37 -0700 (PDT) From: Aditya Pakki To: pakki001@umn.edu Cc: kjlu@umn.edu, wu000273@umn.edu, Bartlomiej Zolnierkiewicz , Allison Randal , Thomas Gleixner , Enrico Weigelt , "Andrew F. Davis" , Tomi Valkeinen , Alexios Zavras , Greg Kroah-Hartman , YueHaibing , linux-omap@vger.kernel.org, linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH] omapfb: fix multiple reference count leaks due to pm_runtime_get_sync Date: Sat, 13 Jun 2020 22:05:18 -0500 Message-Id: <20200614030528.128064-1-pakki001@umn.edu> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On calling pm_runtime_get_sync() the reference count of the device is incremented. In case of failure, decrement the reference count before returning the error. Signed-off-by: Aditya Pakki --- drivers/video/fbdev/omap2/omapfb/dss/dispc.c | 7 +++++-- drivers/video/fbdev/omap2/omapfb/dss/dsi.c | 7 +++++-- drivers/video/fbdev/omap2/omapfb/dss/dss.c | 7 +++++-- drivers/video/fbdev/omap2/omapfb/dss/hdmi4.c | 5 +++-- drivers/video/fbdev/omap2/omapfb/dss/hdmi5.c | 5 +++-- drivers/video/fbdev/omap2/omapfb/dss/venc.c | 7 +++++-- 6 files changed, 26 insertions(+), 12 deletions(-) diff --git a/drivers/video/fbdev/omap2/omapfb/dss/dispc.c b/drivers/video/fbdev/omap2/omapfb/dss/dispc.c index 4a16798b2ecd..e2b572761bf6 100644 --- a/drivers/video/fbdev/omap2/omapfb/dss/dispc.c +++ b/drivers/video/fbdev/omap2/omapfb/dss/dispc.c @@ -520,8 +520,11 @@ int dispc_runtime_get(void) DSSDBG("dispc_runtime_get\n"); r = pm_runtime_get_sync(&dispc.pdev->dev); - WARN_ON(r < 0); - return r < 0 ? r : 0; + if (WARN_ON(r < 0)) { + pm_runtime_put_sync(&dispc.pdev->dev); + return r; + } + return 0; } EXPORT_SYMBOL(dispc_runtime_get); diff --git a/drivers/video/fbdev/omap2/omapfb/dss/dsi.c b/drivers/video/fbdev/omap2/omapfb/dss/dsi.c index d620376216e1..6f9c25fec994 100644 --- a/drivers/video/fbdev/omap2/omapfb/dss/dsi.c +++ b/drivers/video/fbdev/omap2/omapfb/dss/dsi.c @@ -1137,8 +1137,11 @@ static int dsi_runtime_get(struct platform_device *dsidev) DSSDBG("dsi_runtime_get\n"); r = pm_runtime_get_sync(&dsi->pdev->dev); - WARN_ON(r < 0); - return r < 0 ? r : 0; + if (WARN_ON(r < 0)) { + pm_runtime_put_sync(&dsi->pdev->dev); + return r; + } + return 0; } static void dsi_runtime_put(struct platform_device *dsidev) diff --git a/drivers/video/fbdev/omap2/omapfb/dss/dss.c b/drivers/video/fbdev/omap2/omapfb/dss/dss.c index 7252d22dd117..3586579c838f 100644 --- a/drivers/video/fbdev/omap2/omapfb/dss/dss.c +++ b/drivers/video/fbdev/omap2/omapfb/dss/dss.c @@ -768,8 +768,11 @@ int dss_runtime_get(void) DSSDBG("dss_runtime_get\n"); r = pm_runtime_get_sync(&dss.pdev->dev); - WARN_ON(r < 0); - return r < 0 ? r : 0; + if (WARN_ON(r < 0)) { + pm_runtime_put_sync(&dss.pdev->dev); + return r; + } + return 0; } void dss_runtime_put(void) diff --git a/drivers/video/fbdev/omap2/omapfb/dss/hdmi4.c b/drivers/video/fbdev/omap2/omapfb/dss/hdmi4.c index 7060ae56c062..4804aab34298 100644 --- a/drivers/video/fbdev/omap2/omapfb/dss/hdmi4.c +++ b/drivers/video/fbdev/omap2/omapfb/dss/hdmi4.c @@ -39,9 +39,10 @@ static int hdmi_runtime_get(void) DSSDBG("hdmi_runtime_get\n"); r = pm_runtime_get_sync(&hdmi.pdev->dev); - WARN_ON(r < 0); - if (r < 0) + if (WARN_ON(r < 0)) { + pm_runtime_put_sync(&hdmi.pdev->dev); return r; + } return 0; } diff --git a/drivers/video/fbdev/omap2/omapfb/dss/hdmi5.c b/drivers/video/fbdev/omap2/omapfb/dss/hdmi5.c index ac49531e4732..a06b6f1355bd 100644 --- a/drivers/video/fbdev/omap2/omapfb/dss/hdmi5.c +++ b/drivers/video/fbdev/omap2/omapfb/dss/hdmi5.c @@ -43,9 +43,10 @@ static int hdmi_runtime_get(void) DSSDBG("hdmi_runtime_get\n"); r = pm_runtime_get_sync(&hdmi.pdev->dev); - WARN_ON(r < 0); - if (r < 0) + if (WARN_ON(r < 0)) { + pm_runtime_put_sync(&hdmi.pdev->dev); return r; + } return 0; } diff --git a/drivers/video/fbdev/omap2/omapfb/dss/venc.c b/drivers/video/fbdev/omap2/omapfb/dss/venc.c index d5404d56c922..0b0ad20afd63 100644 --- a/drivers/video/fbdev/omap2/omapfb/dss/venc.c +++ b/drivers/video/fbdev/omap2/omapfb/dss/venc.c @@ -348,8 +348,11 @@ static int venc_runtime_get(void) DSSDBG("venc_runtime_get\n"); r = pm_runtime_get_sync(&venc.pdev->dev); - WARN_ON(r < 0); - return r < 0 ? r : 0; + if (WARN_ON(r < 0)) { + pm_runtime_put_sync(&venc.pdev->dev); + return r; + } + return 0; } static void venc_runtime_put(void) -- 2.25.1