Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp805717ybt; Sun, 14 Jun 2020 00:04:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwrtQlUnq41WxD9fm1TdQ6AItBIQmGqAAKKq5DNmOPVJ0w1zf6hVzZpaohyrIvwGOqGIh/A X-Received: by 2002:a17:906:5645:: with SMTP id v5mr8337189ejr.533.1592118274461; Sun, 14 Jun 2020 00:04:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592118274; cv=none; d=google.com; s=arc-20160816; b=RxrXKQpfg0ATKzoZ1VEx5Q1jhQHv8HU/fFLOSbcTd6npDTl0u2/cKKIOco4Z23Wuzo HSizNJRUGyQA/dYM8JD4SSTW2fvEh6AghEqL5alLOhF2sLB4eX1yB6gaKMGPTzzjsChX eBPuPENnEMfyYqTBPA9+Bv4+hmMHDAuAvXSpohYyspe9Gw1V7fpTaT+ZkiMBnDul5fuU kL9qiQw3eZhfJihndIwSQpTj1Yt2C8Lyx96rrb7FBbvxj+qgbiHLQNMTbeshN4/78UUQ 95trtidmmkQbjHrWcc/NwIqfZwjAcHIZv85tUdmgmHJGetoWwrmxfoI1v3/yPuKNipjT 3tyw== 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=auNQFE3Ts/lVKnLWQnQdPedtvSl90z04f6oWD1caeAc=; b=frSifrItmcx2W3PqV7Ey2XVBNXvwv4j+C3rtWGvNEq3nI7+q5pcbxAQus2ZyO+epSv 37ZTqPXxfx05yBtaTEblWl6ytAtF+kqZC+Y5vyrtq1WzCVG5Pkvdaal/ryfILDrCno6a YSpAgfckZ6jRppqLgZ2uUFPOk0vg3PxMtZhY8Y2xtK6lOszvu3j5TTb/Qtf3xcsMCQ+V xN9da70QUKxGyjciVyIt1twB4bSO23RBjYv+MH90KEke9g08IDrROEqj7MHhxSMlgDQW zKH76h20RWOQqbPxDJEbGNqHrZ3QIWSGjtT68IB2UOe2btFo9TvLqUNp2P0LdNpoL+t9 ITXA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=fr93qj4c; 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 t16si7075192ejf.398.2020.06.14.00.04.11; Sun, 14 Jun 2020 00:04:34 -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=fr93qj4c; 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 S1725815AbgFNG73 (ORCPT + 99 others); Sun, 14 Jun 2020 02:59:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59324 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725265AbgFNG72 (ORCPT ); Sun, 14 Jun 2020 02:59:28 -0400 Received: from mail-il1-x144.google.com (mail-il1-x144.google.com [IPv6:2607:f8b0:4864:20::144]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 329A3C03E96F for ; Sat, 13 Jun 2020 23:59:28 -0700 (PDT) Received: by mail-il1-x144.google.com with SMTP id 9so12448700ilg.12 for ; Sat, 13 Jun 2020 23:59:28 -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=auNQFE3Ts/lVKnLWQnQdPedtvSl90z04f6oWD1caeAc=; b=fr93qj4cO5q9jan80fW8xtu+/eibTNkcbWX449Tp/akm4f6PjZ8mDsVrgyjU/Empj9 942OISwA9bSU8EkzzJKKUspnzShkwbC3ctM6GNXC/vFp4d2IzrHolJnTRhAu9WY2U05n 46Jv9dB+ChM2nehsNXfLwJVmCtIzhdYw4BxQzSQu6tLvL98HMtl473sY4NqSYhMRk/vR 33/SsYcnpaEO+62gJXefyW3is8G1hvievGgWQbFfmVweFVzPgEfNF5jcMtbHXCvLTgQY m8wQ9mxxeXAT5kpmSAeWFMG5+DkIeSjcsXmx1v5GRCcNneem1mZ2P21CEHhSnOaCbJuJ dcrQ== 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=auNQFE3Ts/lVKnLWQnQdPedtvSl90z04f6oWD1caeAc=; b=d3ON6qRnQSYCCkXEv0NXEfL6bfrIwXXZBhKfN2NHGiqlBgQaUgpNOF7D4iCxje79Wx G8S9U+T5UDiQW2eoF0gge4YcN+ITm4TBENaOpLVmWWmVXYMXwWqCdcOX0Ui0E9Tr8fqY XFOTNnKGymEWwH9kwg1V4ZVxZt2Hzx0HpqlM3VEU9hxcvGgZmlTkyvkmFwTDpboMgsx3 azHjqKpBmY6eKJd5V4+leo67xvDoECkwh4Vs5fh4pVHC7h3xKbbnuTd4fRjqJGlqmcDX X/toFtOssfZg955y4braB4/dwifb+uTMjySOiuHssKywTAPgrGDQfFenk4HJlQ4Monmn lwLg== X-Gm-Message-State: AOAM532DDx3tdCLjpKw3nUmexL1u60+EzrfeSa73STCEQ915Ttnn+nTi K8m8C93UVZA5naEWPqc0/PE= X-Received: by 2002:a92:cec3:: with SMTP id z3mr19504546ilq.183.1592117966166; Sat, 13 Jun 2020 23:59:26 -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 b29sm5843375ioc.32.2020.06.13.23.59.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Jun 2020 23:59:25 -0700 (PDT) From: Navid Emamdoost To: Eric Anholt , David Airlie , Daniel Vetter , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: emamd001@umn.edu, wu000273@umn.edu, kjlu@umn.edu, smccaman@umn.edu, Navid Emamdoost Subject: [PATCH] drm/vc4: fix ref count leak in vc4_vec_encoder_enable Date: Sun, 14 Jun 2020 01:59:18 -0500 Message-Id: <20200614065918.18738-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 in vc4_vec_encoder_enable, the call to pm_runtime_get_sync increments the counter even in case of failure, leading to incorrect ref count. In case of failure, decrement the ref count before returning. Signed-off-by: Navid Emamdoost --- drivers/gpu/drm/vc4/vc4_vec.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/vc4/vc4_vec.c b/drivers/gpu/drm/vc4/vc4_vec.c index bd5b8eb58b18..706fdc7758f9 100644 --- a/drivers/gpu/drm/vc4/vc4_vec.c +++ b/drivers/gpu/drm/vc4/vc4_vec.c @@ -406,7 +406,7 @@ static void vc4_vec_encoder_enable(struct drm_encoder *encoder) ret = pm_runtime_get_sync(&vec->pdev->dev); if (ret < 0) { DRM_ERROR("Failed to retain power domain: %d\n", ret); - return; + goto out; } /* @@ -419,13 +419,13 @@ static void vc4_vec_encoder_enable(struct drm_encoder *encoder) ret = clk_set_rate(vec->clock, 108000000); if (ret) { DRM_ERROR("Failed to set clock rate: %d\n", ret); - return; + goto out; } ret = clk_prepare_enable(vec->clock); if (ret) { DRM_ERROR("Failed to turn on core clock: %d\n", ret); - return; + goto out; } /* Reset the different blocks */ @@ -464,6 +464,8 @@ static void vc4_vec_encoder_enable(struct drm_encoder *encoder) VEC_WRITE(VEC_DAC_MISC, VEC_DAC_MISC_VID_ACT | VEC_DAC_MISC_DAC_RST_N); VEC_WRITE(VEC_CFG, VEC_CFG_VEC_EN); +out: + pm_runtime_put(&vec->pdev->dev); } -- 2.17.1