From nobody Wed Jun 17 02:58:38 2026 Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C6FD23ACF0E for ; Tue, 28 Apr 2026 11:45:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777376739; cv=none; b=B6dN065FtTMcXlcMu75GbKN7FH+EAcqfW4HZzAmQL0xumRWiLK6SAuThVRCWn1+9Stjs6LmVTF+ssGdYBZRlwAYjAHI5R2lGFMHXC4hFbDUYf8IhS8PvBkujTp6K8654VYvxWaKq012iu+k6FN+2dXql4YAj2s4aGCdXmin0wQg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777376739; c=relaxed/simple; bh=vigMJCMSahg9i2hPvyHLRNOb5Yx0X+aJKS2AIwY+3xE=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=QbRgNKTFRBGRp1ERAPzfiZa/dzqFreVhmSzU/5fkJXM6S0b+DRHx4giQHmZ8cIazsdwIHdJm/6W0AdgAUnCdQO+27vTxbaLofgO/OabRNL6dEv8ky8CdVt6PUh2S7CLI/tj8qI0IpkloQczAJU+1/NlE6p+4rUirRdD5UC6Bkao= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=qrXc1QPv; arc=none smtp.client-ip=209.85.216.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="qrXc1QPv" Received: by mail-pj1-f41.google.com with SMTP id 98e67ed59e1d1-35da8d037a5so5344912a91.0 for ; Tue, 28 Apr 2026 04:45:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777376737; x=1777981537; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=1pkP0/dDsbN7BRJkxdoTN59hq9O2Teltgpo/B86M5m4=; b=qrXc1QPvDDWzICflMGws60MCGTvlk3xbvqxprU5C22djcAmEOk1FqR4wpRUVunS+oI b5IkJ/tRTg4eRL5oWcbVatUdooLd/VISLnWkYLzY54nfqV3dsNBTTyXV8XRHpeBudSzb 0gTRGmnjKJx7w17GyChzjDOYTIJP4gQKfqMhxCqip71eZRwNYZHgM4bi+w2JoIU67QT+ lPAXGskeRLxDP00QFNtAT2deeIyLyYwwFEnYVwM3asXnyNPofTfEaTSRQLhl6yfcqAB+ r7KALex3lfRk22Db1+F8qMbQe4MuAcRRJ6aUJUg14oSLFSeNJDK+Mn98jTY5S8Ir5Ymp jr7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777376737; x=1777981537; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=1pkP0/dDsbN7BRJkxdoTN59hq9O2Teltgpo/B86M5m4=; b=Ql24qNHaTnVtVvtL4+4JBJ6ymDYG8EENfLIRQnJyTO6Yz3F/v81ss2HzI8bjfT3wgN yMUAb8oVxGB/q4I4YIx9i94DvEXzfAHVbNQ4BS6LTXAq7+Sxu2YK0by+5eBUlEFMkEZ2 n9bQZQWxNw8t/BKkncDc+F6WoAyWEKKirdnb7ZqIJBZX3Gz5ObRvOPJ5kg5BShk8UkXZ IznhvEALWrCf9YgFPsoGN8xEZxR3e535EYzK2jBUlkhBKg+gqVn2hCLmzxCX/OOOJ2Tr AbKVsT3nvORHxCJIWuDyj05xymvA0VxrNe/xEEswoKUQDyxSsPFSU4MRbEfHHgQ0xLTJ jyhQ== X-Forwarded-Encrypted: i=1; AFNElJ8ZqYlWhblNjq5rfxiNfA7rFH5spfKxbkYRv79P7/dalKfajRVpag6RH6fmdFsegmICDKQf57XpGgd27pI=@vger.kernel.org X-Gm-Message-State: AOJu0YwzJSZQmPe2TR5QkRCFd+bUGHz3hHPmsuanj0y9aq/ulJVd/XDy /mTOHxoL7zqE477eq5I9Q+JrhqbjvJdNIJMgF8Z1XvNLd2zKxGg7O5W4 X-Gm-Gg: AeBDiev8OCwbsM0NlYFv6Mh3QWNas/7xWdFDG3SrEqmGsBIOSig1iXSEFTuQvHnzpCj t3yiMuNdfr1OOdBMfQEmqz4hEIbfznlBjocFkNlfSIRLvUgl1H/MudkKpQTmbpSU+CNkliZfPBi nJv488LmArYdKGKtLi4vcPVJZadj08keFOPh6nROCg5WY1X5UVZSB23DqRe280IAv4aFrcDMaSg 1Q/xASZwuw5GCioqVpdv3sWXtYbN/EPOd3+/nGpNxPM26YfuiKjxAs+Noi59JKa3X7lSJcOZrLa DY3KgGBAKjAYlBwMx7Rb2Gln6ywYuv6FJmPl+eJS7JaPzC7cSBVbsDQ8S2DD1K+yi0/bYqPqRYL AlNaQGStQ1y17Rk30cZ1qYEJqc/NOzEXXXfBIM01X9BsU6xWEwWzJtvLA2ibfPwWwQZnvFtDiSJ OxmraVxJkTkhyGfJ7B6PqYlTc= X-Received: by 2002:a17:90a:d64e:b0:35d:8fdb:4f26 with SMTP id 98e67ed59e1d1-36491f89e50mr2890066a91.1.1777376737142; Tue, 28 Apr 2026 04:45:37 -0700 (PDT) Received: from lgs.. ([101.36.111.22]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36490fbfccesm2690890a91.14.2026.04.28.04.45.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Apr 2026 04:45:36 -0700 (PDT) From: Guangshuo Li To: Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , David Airlie , Simona Vetter , Lijo Lazar , Hawking Zhang , Likun Gao , Asad Kamal , Ce Sun , Kees Cook , Meng Li , Guangshuo Li , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH] drm/amdgpu: Fix error handling in amdgpu_xcp_cfg_sysfs_init() Date: Tue, 28 Apr 2026 19:45:21 +0800 Message-ID: <20260428114521.364863-1-lgs201920130244@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Once kobject_init_and_add() fails for an XCP resource kobject, we should call kobject_put() to decrement the reference count for cleanup. Otherwise, it could cause a memory leak. The error handling loop also uses xcp_res[i] instead of xcp_res[j], so it fails to put the previously added resource kobjects and may put the failed kobject more than once. Fix this by putting the failed resource kobject before jumping to the error path, and by using the correct loop index when putting the previously added resource kobjects. Found by code review. Fixes: 4ae86dc87850 ("drm/amdgpu: Add sysfs nodes to get xcp details") Signed-off-by: Guangshuo Li --- drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_xcp.c index cc5f4e01e38f..315e33a9d7c9 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.c @@ -948,15 +948,17 @@ static void amdgpu_xcp_cfg_sysfs_init(struct amdgpu_d= evice *adev) &xcp_cfg_res_sysfs_ktype, &xcp_cfg->kobj, "%s", xcp_res_names[rid]); - if (r) + if (r) { + kobject_put(&xcp_res->kobj); goto err; + } } =20 adev->xcp_mgr->xcp_cfg =3D xcp_cfg; return; err: for (j =3D 0; j < i; j++) { - xcp_res =3D &xcp_cfg->xcp_res[i]; + xcp_res =3D &xcp_cfg->xcp_res[j]; kobject_put(&xcp_res->kobj); } =20 --=20 2.43.0