Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp810106ybt; Sun, 14 Jun 2020 00:14:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyiY1sH18roZ1dXEWZ0N4cKo0A4B+bpm54FHTq3fndurZ6cFScBhJXujgxHOcrniK5Ylyxt X-Received: by 2002:a50:d9cd:: with SMTP id x13mr10892439edj.221.1592118843394; Sun, 14 Jun 2020 00:14:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592118843; cv=none; d=google.com; s=arc-20160816; b=iYjUzc1MtLh+WqNiEgO0xamTgHv7q6S+wnnEHU/OA9hPCnOGVmAZ60qV/BlLMnI+OW e+584BA9lOeIjDGxSBZ/0dhrRs+kyyrQuC9fIH56ikHoI7B/7ZK96sHAqE84wB4zOxVc HgFZHYZnTkgA1z307mLtyQHGUqUVHiLyghLx31eA9QhxRTz+3N77Qv4uhzZrnPnCDDpV qZM/h36qYS+RCUXE1WswsYUAJYmPO6NxN3DQVozt96IZPSgpXVQYa29a1Q2d2nnsxdGL q2HkKHNDBJmkDYxTbBoXjPjZdGa0h80wfQXXCr/QThw2deAAohvCjWfABOkRafnfWhL0 rEDg== 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=VPVqWxYm5OyjOv331996CGH9YiPFKfJycn9OwXQfzdE=; b=Y3pu90waPA0LYXtf76vPcmXH5LnZDAfXxt35MyioGu6Faq8Z3y4IPpunSXU/VRpexr 7J7BHZT4TzfyHF0rOhAVQ231Sy6dYuryApTYuuGyMuRJGw9NlRIWvY0tDHDsDMt1BcQe 17fkLbr/h8HfAiWD5hiEPgVvHSloCwrgK8zviC0A6eL5BCYuWOPAUW1NDuuS0W8sgS9O /nhwwXlXtap1CzL/CktXPihlF/qq+F/uYGWFeWnrT5THhV6NRjz0wTDC7Q5kTxiAgUsm P5P0TyHTLSZaXAd2aJMxud8VbImT+DhFaBWV2L7f8sjD8uNfumUr1mWzzQoD++kVEXc+ l41g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Si+mBzty; 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 bs21si6901958edb.87.2020.06.14.00.13.40; Sun, 14 Jun 2020 00:14:03 -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=Si+mBzty; 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 S1725896AbgFNHJz (ORCPT + 99 others); Sun, 14 Jun 2020 03:09:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60920 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725265AbgFNHJz (ORCPT ); Sun, 14 Jun 2020 03:09:55 -0400 Received: from mail-io1-xd41.google.com (mail-io1-xd41.google.com [IPv6:2607:f8b0:4864:20::d41]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1E97BC03E96F for ; Sun, 14 Jun 2020 00:09:55 -0700 (PDT) Received: by mail-io1-xd41.google.com with SMTP id r77so14546910ior.3 for ; Sun, 14 Jun 2020 00:09:55 -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=VPVqWxYm5OyjOv331996CGH9YiPFKfJycn9OwXQfzdE=; b=Si+mBztyXLpNw+lq5vPMpNGKP0EI+ykD3vuqlK8ZNIb6UkkFhoAM75WVjN+g8jSLhX hIJJyaxEmiWwfH5wcCzyDLENdFDvHBlpi1xEwIQ+owxGEDnzX+6UCXw2KWm0RXCVZ8xl LHMyFNVk/L/xf9JlK3iCt3bsP6NN2NR0TYct1K5D9kz23w5XWNCx7UNHpAnA8vWbr1bO h/L769+gQ5P8lKjDPBVsZPQ9y04jqz/kxNXDWf4GQb/M9XwDh944S2JfO/qTQRhvkxcQ fx+jW6EaXGWkKxT8IanPZXM4TtDgFUJrWisoD06Gd19DB3bNP+utRmrfnc9BT4uoeyY9 oTOA== 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=VPVqWxYm5OyjOv331996CGH9YiPFKfJycn9OwXQfzdE=; b=Cd+6apZ13h4J4gzVeBIz2vXHmNcgQjt6KyyTu1qup+hJCu5ahS0LjwOXHur+d1L2of KLvOeiVufLXeov9bSg4O+40Ds+9TQjA7JXc6ZjqovSIJnbQLTyhIExtsJbDaN/Row3Wz o/vcbtT1V9PdkLfDWve8DdRDI2/gAZhzXpXNHhuMbUzsdLVaaWxZ/q4QemiMNmdfvBRp /HOVgeBwVmCVKOLPFOJziQSV0SeiRb7L2snKHMaqOqoxBGoGkOR8my9rS6gqt3cE5JII oM72B9GSQ0PvmwTjKrHKBPetQ/1xZXwFPv3UlUF3mKVt/NmGKE7m9lOMC4nJSSeztuCO +oRw== X-Gm-Message-State: AOAM531tUmDcEts7XK3UepE3Y5+w+vbSNGA2lchJWXMfB42cQwCJJkpE 3S1fXOTm7nL0Ew6c4EGsBlw= X-Received: by 2002:a05:6602:5ce:: with SMTP id w14mr21839589iox.178.1592118594249; Sun, 14 Jun 2020 00:09:54 -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 v11sm5944048ile.61.2020.06.14.00.09.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jun 2020 00:09:53 -0700 (PDT) From: Navid Emamdoost To: Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , David Airlie , Daniel Vetter , Andrey Grodzovsky , Lyude Paul , Thomas Zimmermann , Shirish S , yu kuai , Navid Emamdoost , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: emamd001@umn.edu, wu000273@umn.edu, kjlu@umn.edu, smccaman@umn.edu Subject: [PATCH] drm/amdgpu: fix ref count leak in amdgpu_display_crtc_set_config Date: Sun, 14 Jun 2020 02:09:44 -0500 Message-Id: <20200614070946.65770-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 amdgpu_display_crtc_set_config, 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/amd/amdgpu/amdgpu_display.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c index f7143d927b6d..5e51f0acf744 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c @@ -282,7 +282,7 @@ int amdgpu_display_crtc_set_config(struct drm_mode_set *set, ret = pm_runtime_get_sync(dev->dev); if (ret < 0) - return ret; + goto out; ret = drm_crtc_helper_set_config(set, ctx); @@ -297,7 +297,7 @@ int amdgpu_display_crtc_set_config(struct drm_mode_set *set, take the current one */ if (active && !adev->have_disp_power_ref) { adev->have_disp_power_ref = true; - return ret; + goto out; } /* if we have no active crtcs, then drop the power ref we got before */ @@ -306,6 +306,7 @@ int amdgpu_display_crtc_set_config(struct drm_mode_set *set, adev->have_disp_power_ref = false; } +out: /* drop the power reference we got coming in here */ pm_runtime_put_autosuspend(dev->dev); return ret; -- 2.17.1