From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8B25EC6FA82 for ; Mon, 12 Sep 2022 22:35:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229542AbiILWfD (ORCPT ); Mon, 12 Sep 2022 18:35:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37838 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229482AbiILWfA (ORCPT ); Mon, 12 Sep 2022 18:35:00 -0400 Received: from mail-oa1-x2a.google.com (mail-oa1-x2a.google.com [IPv6:2001:4860:4864:20::2a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B400418B02 for ; Mon, 12 Sep 2022 15:34:59 -0700 (PDT) Received: by mail-oa1-x2a.google.com with SMTP id 586e51a60fabf-127ba06d03fso27333893fac.3 for ; Mon, 12 Sep 2022 15:34:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date; bh=JV7ELz4kPbM5zN+d1pRguKa83wMKNN5UKfm4nAD4taw=; b=kCcu/2IKnox3u9+zK7lOqIRhYf9kr9vm3wsCj6PU5aFX4J98EbdN3EDa3TwpJ7UOjG LrnkokkVHZ/HdP4mvJQ2zl1TorLnQAk/Lic9RGmM4+aEMy8t3Xqsv7q8wWAZIxh2/FZD 0z1+iOprlAiRrxc97dK6joWlmaz2nQNuCZN3oAHD0U8Dc1rt88vQ7gNJW/clEROtn1dK CD8gBneUBtutD/k+d5MAGVg+hS3oWiIdHQfRYIBIi1dFinQQ9zcv7eyoc5ckeVBfgJVg RbTcdNEaepR3KjIAZKGQrbYJDGgluBGDuKWchI8Ikd5THNJP7cFUPP5chxAU4/kooJ4S RvYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date; bh=JV7ELz4kPbM5zN+d1pRguKa83wMKNN5UKfm4nAD4taw=; b=bQx5+iX9xk3SJYY8DMFD2lz9jc2/uCSO1jtM35ZQNAQ8tiep7T+9RUAXXean+kw4Pn 0EEOSWQ7aS1qzrT3drS+F4xKP9qGk0VlVmxEy0N8KfZqTe1U/daPHk6uaHc1+IziherM Ngnpn4LTYTVRQIbEYc+Gyl5EX5onGKRkYtHlfr2Ulkc/OOb8npGXC6yH5/QE/cqswU0c OVYcjnAaqd0V/7O0XbHpG7J6kz1ZuSoSSyQeIcZmalkClY0rFFE6VuiGk4LwnsHWJYVz lS8J/rcD7FzURvirGT6x4cuMIcs5grkTsa5dSzTwb5F9sPcPGhVwVCdMRXOQfSc4mkNz Sk/Q== X-Gm-Message-State: ACgBeo2TP5isePkxq78CdimUTMurAQTLkYn6/enZf4DX1ldQTcw+hlE0 yQB55n2ENAWDd+8eTWWRci8= X-Google-Smtp-Source: AA6agR7JuQ8AmkzZbiUb9JdfEksEYlWBob/c8uwbXZHDEDVTUf++BgJE+mLxqMRCQ2uPr3LIKZ0eAg== X-Received: by 2002:aca:1810:0:b0:34f:b8d6:7999 with SMTP id h16-20020aca1810000000b0034fb8d67999mr230929oih.231.1663022098970; Mon, 12 Sep 2022 15:34:58 -0700 (PDT) Received: from macondo.. ([2804:431:e7cd:8cb3:36b6:6fa1:2fec:e29b]) by smtp.gmail.com with ESMTPSA id ep15-20020a056870a98f00b00127ebb410a4sm6016444oab.11.2022.09.12.15.34.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Sep 2022 15:34:58 -0700 (PDT) From: Rafael Mendonca To: Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , "Pan, Xinhui" , David Airlie , Daniel Vetter , Wayne Lin , Mikita Lipski , Nicholas Kazlauskas Cc: Rafael Mendonca , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH] drm/amdgpu: Fix memory leak in hpd_rx_irq_create_workqueue() Date: Mon, 12 Sep 2022 19:34:32 -0300 Message-Id: <20220912223433.630364-1-rafaelmendsr@gmail.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If construction of the array of work queues to handle hpd_rx_irq offload work fails, we need to unwind. Destroy all the created workqueues and the allocated memory for the hpd_rx_irq_offload_work_queue struct array. Fixes: 8e794421bc98 ("drm/amd/display: Fork thread to offload work of hpd_rx_irq") Signed-off-by: Rafael Mendonca --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 5140d9c2bf3b..6a2e455c5466 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -1295,13 +1295,21 @@ static struct hpd_rx_irq_offload_work_queue *hpd_rx_irq_create_workqueue(struct if (hpd_rx_offload_wq[i].wq == NULL) { DRM_ERROR("create amdgpu_dm_hpd_rx_offload_wq fail!"); - return NULL; + goto out_err; } spin_lock_init(&hpd_rx_offload_wq[i].offload_lock); } return hpd_rx_offload_wq; + +out_err: + for (i = 0; i < max_caps; i++) { + if (hpd_rx_offload_wq[i].wq) + destroy_workqueue(hpd_rx_offload_wq[i].wq); + } + kfree(hpd_rx_offload_wq); + return NULL; } struct amdgpu_stutter_quirk { -- 2.34.1