From nobody Fri Dec 19 20:51:14 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1DC5325C6FE; Tue, 27 May 2025 11:33:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748345628; cv=none; b=PJkyCZj6//kM/XbtAiUoDtj6ueXn6p0zCqDcBbe19U7ZFANnSoFYN0C1y419ZvP8J3cpSQzbgCDKYzrnoOgRFU0d///9E3mYkX5bz6SuSXIUZo3VlOXYdGNuXhcUkqzziWIRxZwJN0g0RP07OhTXyP7WUNr8pEnUhGVrG8fAA14= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748345628; c=relaxed/simple; bh=qdjjg9250uAChp/B6CMoiJw5KiM08dmL8XUQ0eA5f48=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MoZ9/IWBRljUdRFkfua3c7qrgOj1ZvO8zZWpBh+1/FMcPFd5Gxd1wXFRjWbtj3bMshpnc0r2lLlnvyzO6/+SndAwFUVjIIoe2U13yf3CtRBgpc0z1TGq96Qy+s0+OZM+PErN+/rMm354c15XV5r/zNBBVAsi0gN9BZmyNIGeq/E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=sJGp7pNH; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="sJGp7pNH" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CFC73C4CEEF; Tue, 27 May 2025 11:33:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748345627; bh=qdjjg9250uAChp/B6CMoiJw5KiM08dmL8XUQ0eA5f48=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=sJGp7pNHltxVZJrIrLSWMKqjmls9N/01A6ZLQ4xG3VOvHwNwnkP9846G3joZviuE+ dXeBoCLs5HFHmiLk0IwmnYQUsf8EFNjUp5LnFWCuInCJiYiwPFFnlUHy5ntB2S8s7R oH6fezvpiA0SYZi2PutYbDuDaDktNnP25qiFtb96xmfFcIlKyuWlamGgaDWDdcVsPw XeYFK7XuR5iLiJr8mkRzFnDgJBowYxjfmTvlIObeUjLf+03GK8eu9wAYbJ8sU8PQjP Geypkkp63ipaR1f9erryZ8820Kc8Mgxtbn78+i4jixs5HSiTXmnBb/HKG0KjZa673O bnkzV/ZIxSmHA== From: Jeff Layton Date: Tue, 27 May 2025 07:33:32 -0400 Subject: [PATCH v10 1/9] ref_tracker: don't use %pK in pr_ostream() output Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250527-reftrack-dbgfs-v10-1-dc55f7705691@kernel.org> References: <20250527-reftrack-dbgfs-v10-0-dc55f7705691@kernel.org> In-Reply-To: <20250527-reftrack-dbgfs-v10-0-dc55f7705691@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jeff Layton , =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1830; i=jlayton@kernel.org; h=from:subject:message-id; bh=qdjjg9250uAChp/B6CMoiJw5KiM08dmL8XUQ0eA5f48=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoNaMVLLmOw5jYchzscMUBCMn0FsTgbe1z058el H3LknpBXP6JAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaDWjFQAKCRAADmhBGVaC FcOPD/9GCxhSpKUuKWaezGXmTA8DD9sEdh3YsDqfnuRcy9ox5eoy1bGWuCnTtSPuZsCeZ0rNB0E +7h/WTCiWi+aAhFWVJ/DLeirpyiD8IMbHL0d+JMmN8on4jZW2ASjgnDv/bPg5wjqAgw+mKx1yVw kZFuuebO+ndXxIfRVR1+V+dkxYxJOUy57Pn7OjLJUCwBrdrUTKi+Q8MEqnhv0z9Roosj7PYEpKD XCi0hxLnO/8MzqeOE4omgr/xKtcy3QcpEmYdy6pewuk4g613+vt7GmdjF52ZpxO7WTvWr2K5mLA 0om3Rp9PcuiCY7Ll4Vttw9tQrW5ImLwXyqm/+QmjFBJwupg5TdvJm3amHuq5Ba0GfMnvFojaSjE CXw/icDSUYHRv/GpfAYMrcoeAptEx+RtXYlnNpvlD891XlSfAVN6lJvXMqMj2SVXdRvGYsAsGYD N39FSGlAiCOIkqGW7gF5WaVSwyVwjyv1ZxQTaSxSmG+IJxANBI85VsfuDmEDY07pwna2KxT5OTo 7pmdbQLi9qksrmUovLVLoTv6MyVS1nkfEetjUKf5US5iZp4IfMw01QxCjFyTgq/Owi5Jr3BArtp pA8HnxZxZeVyAsJHdUt7eWo2PEl0Cpcmm4WnRggEu6sLtrHCGiDDaqnBaC7fWGvA5aScehbRViv z5CRMeYr3WeEBqw== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 As Thomas Wei=C3=9Fschuh points out [1], it is now preferable to use %p instead of hashed pointers with printk(), since raw pointers should no longer be leaked into the kernel log. Change the ref_tracker infrastructure to use %p instead of %pK in its formats. [1]: https://lore.kernel.org/netdev/20250414-restricted-pointers-net-v1-0-1= 2af0ce46cdd@linutronix.de/ Cc: Thomas Wei=C3=9Fschuh Reviewed-by: Thomas Wei=C3=9Fschuh Signed-off-by: Jeff Layton --- lib/ref_tracker.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c index cf5609b1ca79361763abe5a3a98484a3ee591ff2..de71439e12a3bab6456910986fa= 611dfbdd97980 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -96,7 +96,7 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *dir, =20 stats =3D ref_tracker_get_stats(dir, display_limit); if (IS_ERR(stats)) { - pr_ostream(s, "%s@%pK: couldn't get stats, error %pe\n", + pr_ostream(s, "%s@%p: couldn't get stats, error %pe\n", dir->name, dir, stats); return; } @@ -107,13 +107,13 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *= dir, stack =3D stats->stacks[i].stack_handle; if (sbuf && !stack_depot_snprint(stack, sbuf, STACK_BUF_SIZE, 4)) sbuf[0] =3D 0; - pr_ostream(s, "%s@%pK has %d/%d users at\n%s\n", dir->name, dir, + pr_ostream(s, "%s@%p has %d/%d users at\n%s\n", dir->name, dir, stats->stacks[i].count, stats->total, sbuf); skipped -=3D stats->stacks[i].count; } =20 if (skipped) - pr_ostream(s, "%s@%pK skipped reports about %d/%d users.\n", + pr_ostream(s, "%s@%p skipped reports about %d/%d users.\n", dir->name, dir, skipped, stats->total); =20 kfree(sbuf); --=20 2.49.0 From nobody Fri Dec 19 20:51:14 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 273612620C1; Tue, 27 May 2025 11:33:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748345630; cv=none; b=BtcCTIar07/cqBvvkE/Eme/+QL6579wPzavpmDw9WaidgXsriqcpiFLZbuTuyNTHRVOeKz4LC0T+86JJHUUHvQ7ndRjq+mwYj7fk5D4jiWywCzXqkxfIDah43mHcm6jM9KDO9Ws3KYRtYP9+oyOk9O+MCaCe6kwjEv/+Ev6i3CQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748345630; c=relaxed/simple; bh=LxLVRB8GvDbWgwRUBMxy60vYqqNKxSuBn+6jZzlFCL8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=S5Wb51p+uCoFJR8mKWT1Swk4u/4ZzSyxD/jsp9i5QbjtFJriyLJWXk6MRiQUuWF4Hb/PExgOocltWKFAvlEfqpbnbrWeDGLP/D6jga7OlF6ff2kW+d7wOxSb2IxpyX9ArRIbzbzjW2FxLxT7uknTE1jDNfg/Y4l+75PbWsv7Pi8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=H/1Vjf2s; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="H/1Vjf2s" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D7FB6C4CEF2; Tue, 27 May 2025 11:33:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748345629; bh=LxLVRB8GvDbWgwRUBMxy60vYqqNKxSuBn+6jZzlFCL8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=H/1Vjf2sPX5KsrcOHk+12wXlOtPzI8Iukxuhbz6YGMxCk/wg193jaEboTR7JMwqjR A9zcY+aMWg5Whhb838580SWhl32lJTyaeXjR7+5s637gghgbo1dvemnPZdTZrSWUBg eFyNfk7oW4yRp5BNydPJwKtTcBXHsiuIZS1Gq+MBQbqs6g8uu0grCCoQgL6kUlHhNA jCZe7msdNHpPl5KFH4eZ6Yd4nxfpwvBo4vMklqgi0G8kbl5odQJDplygC/J1HNTtPx yH4l8Ebd8L9mRqgRrnCXKDeG5G5WqJaZnmJVXAInZ26JwNcWMBK1VzT01uYWQ6n8Q2 BVwX1wFQUw7jA== From: Jeff Layton Date: Tue, 27 May 2025 07:33:33 -0400 Subject: [PATCH v10 2/9] ref_tracker: add a top level debugfs directory for ref_tracker Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250527-reftrack-dbgfs-v10-2-dc55f7705691@kernel.org> References: <20250527-reftrack-dbgfs-v10-0-dc55f7705691@kernel.org> In-Reply-To: <20250527-reftrack-dbgfs-v10-0-dc55f7705691@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1182; i=jlayton@kernel.org; h=from:subject:message-id; bh=LxLVRB8GvDbWgwRUBMxy60vYqqNKxSuBn+6jZzlFCL8=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoNaMVUlqezMYH1mChIIL5u6XBGAgfwmyhmxpLN 5wWe7G0X5CJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaDWjFQAKCRAADmhBGVaC FcTlEAC7BuBEddZnQjUlkz5zSm4otOItDTjUhGMXZTeBxwZ3rNVydEEUQpBLVk+WDdZyiMlhHwt 75DORyJfHzYdSpf0e/WnyqVbJj4ByPcSQRFSj5rcaKmNWHEltD274lcgSWy0Zl1YYpiSYFWGVJE 2P2R5iZlsXboEsudbSNlwcs7+LqEUN2MorNhS1WWMQK0TpDBTuuBRi3CAWPv5ZdF+MsECg/vD7U BvwqFHL0hXJc0I/si0gzjXIdW+GpyEcrVcfIy6iq2TCfiFEXBH7KSnt0g8usF80u5EsEiyQP32V zNNvMqpDouDHwT/jvnzGYV9XYq8lPmxWfUcL1/LmOEiTbRNnmHA7wwiu5Ps/9ohtgyGlQNKIi4v RWaHQqF+txZ4CKdwrrmp1yflqz/+TMxC0moyxYq0lPnCHCwmgKoJabsH0P9nvwruD3GUnAh35hI LMPi8vUD0Al5my93UERGLE72U8+3gRMLqnu0TmfHgdxdkvUoArxgvsZKbesv9wqI4PeXBb57J7J jTFSWhLLq9BA/rO3HI/juKsV92jV3ID0scnnOoaoj21LeVitpINSdxDeh3//d5yCJ+WqHNCCzGS VgJHp6RpKevoKCI/KYcm2CYf2hAFLWNYszqo6g9CdygWkfk2Tk98iba2JQAcirKqrFEFXF33V6P llhWX9B9xmZxYBg== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 Add a new "ref_tracker" directory in debugfs. Each individual refcount tracker can register files under there to display info about currently-held references. Reviewed-by: Andrew Lunn Signed-off-by: Jeff Layton --- lib/ref_tracker.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c index de71439e12a3bab6456910986fa611dfbdd97980..34ac37db209077d6771d5f4367e= 53d19ba3169c6 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -273,3 +273,19 @@ int ref_tracker_free(struct ref_tracker_dir *dir, return 0; } EXPORT_SYMBOL_GPL(ref_tracker_free); + +#ifdef CONFIG_DEBUG_FS +#include + +static struct dentry *ref_tracker_debug_dir =3D (struct dentry *)-ENOENT; + +static int __init ref_tracker_debugfs_init(void) +{ + ref_tracker_debug_dir =3D debugfs_create_dir("ref_tracker", NULL); + if (IS_ERR(ref_tracker_debug_dir)) + pr_warn("ref_tracker: unable to create debugfs ref_tracker directory: %p= e\n", + ref_tracker_debug_dir); + return 0; +} +late_initcall(ref_tracker_debugfs_init); +#endif /* CONFIG_DEBUG_FS */ --=20 2.49.0 From nobody Fri Dec 19 20:51:14 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 28B5C266592; Tue, 27 May 2025 11:33:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748345632; cv=none; b=oeG+Hk+ajWAaTqTNqKH6CcmbhJUbSdlkRLO7LEX6WYRTnbyaRMj5rJpMhmfE/vLz6aB8Qp1sspGUdGV+hXUaxEx/VMkJ6Yn7PEHhu6ZYIYopDsv9gJ+dQfMxhBZN/g+XIiSvir0Tb68MZtWVVtirFzt2u8o6sUQHhIvvKvRQJtw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748345632; c=relaxed/simple; bh=jHVEVy1GEirWdHs1IJVtpuQ6jElofdeZ5cfT2E8mzAk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CIzNGfAWWjNXqvpbHCJ2WKh0z7npizKRzFzqFt+h2ZcUA9Lg4tEDZCXE7EtoiBhjIJ/dviz1//SQt1m3NKShHN4ja5p6BozZ/IqggwmnFlqoOhKj9TFtg92Rx9Co8DKeGmK1pxjgRxuAOHioHjz064KhkJrWFJa3sQNpXSSzxCY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ntddw5tv; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ntddw5tv" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CDAC1C4CEEE; Tue, 27 May 2025 11:33:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748345631; bh=jHVEVy1GEirWdHs1IJVtpuQ6jElofdeZ5cfT2E8mzAk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ntddw5tvJRGMlfyRdi1bkFxPR3aGqxqMCHE3RuzoRsmu/PMvmAT4/sFsYb1/sSsNL KurkEyvqkcXgigGGxhjmqmYZc1ovcQayIrxmmDEfIu8ieoAQYXYcV3mcFu4cJ6bD+0 7vWbe5d+1yNCiStLIe2IwQH4PcsqbxBxLoIlD3yJdyArEaZk92y//ETqXn4lsRBga6 ZwM4RNmzI0k6bVd1tb5KVsqgHf9A0F4Y9kz+8XoqHDOMquPsHwe1CcKb1c4btDroYn zxTLYCAulI1FgrT35oJN5Tphs3a4WMNAk1n163vNrowr16+9aqpx8KBJKe3lYDQ+Bn s4luAsyrlJHWQ== From: Jeff Layton Date: Tue, 27 May 2025 07:33:34 -0400 Subject: [PATCH v10 3/9] ref_tracker: have callers pass output function to pr_ostream() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250527-reftrack-dbgfs-v10-3-dc55f7705691@kernel.org> References: <20250527-reftrack-dbgfs-v10-0-dc55f7705691@kernel.org> In-Reply-To: <20250527-reftrack-dbgfs-v10-0-dc55f7705691@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4242; i=jlayton@kernel.org; h=from:subject:message-id; bh=jHVEVy1GEirWdHs1IJVtpuQ6jElofdeZ5cfT2E8mzAk=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoNaMWXV4L65KqBiSCepVGJAbyh0itp2LzobeI1 UnMutGRtoOJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaDWjFgAKCRAADmhBGVaC FTSfEADClMcoweXRLm309H4XCtNwb4/aEUHh4rETuiFOlA4gIvyKLYqqBzM6hEf+LXHO1FqzZcp ixcVMwNxK7IBU29KnbJ2Wrs7JMEgFvzaEk7E0TIscAsNjPufUI8ufXGuD+MWBbUfjR+iGTspZPC /U3PmXv5GkAiMzWepmxuGty5SfXO3szV6Tx2HH6+N3itdwMrIi4fUgPIiiRvUWMwQRawnx1/Rh+ Ke06UK4rEAU2C19klGRytV9sB+dyQk9mj/5DtJx8LGXlYjfFO5Mm9gMdKf+ujFAbp4VeMWw3n8x 7DWcHDjkO/5QESqUho/yyzP+tSBSEEDHZyg37vrKm3LG7B6P5Sgi0TkM0ORNaGvDZlzvEz2pDzB cD7Witbue88e0372+QlnW/Wfv1yox/5nXNx++/3+OZLOC1FSMYiQSKZj4qWKW2eqLcQm3VWGUv0 qTLt8OqgOmowKAaW5jcWw5f5EgGub3l4nEfSIudC39CCi4+BHn5vgSEkLDRJGl5e5a+eBQuEw+g JjopP4qVvT7H4zawcTmUwg0wOxZJ0jeObmJ8WGu9U+zhkaDppouytdg5QOyxd26k60eD6S36NXx Lz2xnRDWLbu0bmwdmxO84vOlCsYnEe1YBLhQzg1APp6kuAYFOgA7iBt+bJm9PZZlEdwWV19h7oI SvymvVs5UvlgkQA== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 In a later patch, we'll be adding a 3rd mechanism for outputting ref_tracker info via seq_file. Instead of a conditional, have the caller set a pointer to an output function in struct ostream. As part of this, the log prefix must be explicitly passed in, as it's too late for the pr_fmt macro. Reviewed-by: Andrew Lunn Signed-off-by: Jeff Layton --- include/linux/ref_tracker.h | 2 ++ lib/ref_tracker.c | 51 ++++++++++++++++++++++++++++++++---------= ---- 2 files changed, 38 insertions(+), 15 deletions(-) diff --git a/include/linux/ref_tracker.h b/include/linux/ref_tracker.h index 8eac4f3d52547ccbaf9dcd09962ce80d26fbdff8..a0a1ee43724ffa00e60c116be18= e481bfe1d1455 100644 --- a/include/linux/ref_tracker.h +++ b/include/linux/ref_tracker.h @@ -6,6 +6,8 @@ #include #include =20 +#define __ostream_printf __printf(2, 3) + struct ref_tracker; =20 struct ref_tracker_dir { diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c index 34ac37db209077d6771d5f4367e53d19ba3169c6..607718d00ffa74bd6d9abf97e91= 3abcfd56dd1c8 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -63,21 +63,37 @@ ref_tracker_get_stats(struct ref_tracker_dir *dir, unsi= gned int limit) } =20 struct ostream { + void __ostream_printf (*func)(struct ostream *stream, char *fmt, ...); + char *prefix; char *buf; int size, used; }; =20 +static void __ostream_printf pr_ostream_log(struct ostream *stream, char *= fmt, ...) +{ + va_list args; + + va_start(args, fmt); + vprintk(fmt, args); + va_end(args); +} + +static void __ostream_printf pr_ostream_buf(struct ostream *stream, char *= fmt, ...) +{ + int ret, len =3D stream->size - stream->used; + va_list args; + + va_start(args, fmt); + ret =3D vsnprintf(stream->buf + stream->used, len, fmt, args); + va_end(args); + stream->used +=3D min(ret, len); +} + #define pr_ostream(stream, fmt, args...) \ ({ \ struct ostream *_s =3D (stream); \ \ - if (!_s->buf) { \ - pr_err(fmt, ##args); \ - } else { \ - int ret, len =3D _s->size - _s->used; \ - ret =3D snprintf(_s->buf + _s->used, len, pr_fmt(fmt), ##args); \ - _s->used +=3D min(ret, len); \ - } \ + _s->func(_s, fmt, ##args); \ }) =20 static void @@ -96,8 +112,8 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *dir, =20 stats =3D ref_tracker_get_stats(dir, display_limit); if (IS_ERR(stats)) { - pr_ostream(s, "%s@%p: couldn't get stats, error %pe\n", - dir->name, dir, stats); + pr_ostream(s, "%s%s@%p: couldn't get stats, error %pe\n", + s->prefix, dir->name, dir, stats); return; } =20 @@ -107,14 +123,15 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *= dir, stack =3D stats->stacks[i].stack_handle; if (sbuf && !stack_depot_snprint(stack, sbuf, STACK_BUF_SIZE, 4)) sbuf[0] =3D 0; - pr_ostream(s, "%s@%p has %d/%d users at\n%s\n", dir->name, dir, - stats->stacks[i].count, stats->total, sbuf); + pr_ostream(s, "%s%s@%p has %d/%d users at\n%s\n", s->prefix, + dir->name, dir, stats->stacks[i].count, + stats->total, sbuf); skipped -=3D stats->stacks[i].count; } =20 if (skipped) - pr_ostream(s, "%s@%p skipped reports about %d/%d users.\n", - dir->name, dir, skipped, stats->total); + pr_ostream(s, "%s%s@%p skipped reports about %d/%d users.\n", + s->prefix, dir->name, dir, skipped, stats->total); =20 kfree(sbuf); =20 @@ -124,7 +141,8 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *di= r, void ref_tracker_dir_print_locked(struct ref_tracker_dir *dir, unsigned int display_limit) { - struct ostream os =3D {}; + struct ostream os =3D { .func =3D pr_ostream_log, + .prefix =3D "ref_tracker: " }; =20 __ref_tracker_dir_pr_ostream(dir, display_limit, &os); } @@ -143,7 +161,10 @@ EXPORT_SYMBOL(ref_tracker_dir_print); =20 int ref_tracker_dir_snprint(struct ref_tracker_dir *dir, char *buf, size_t= size) { - struct ostream os =3D { .buf =3D buf, .size =3D size }; + struct ostream os =3D { .func =3D pr_ostream_buf, + .prefix =3D "ref_tracker: ", + .buf =3D buf, + .size =3D size }; unsigned long flags; =20 spin_lock_irqsave(&dir->lock, flags); --=20 2.49.0 From nobody Fri Dec 19 20:51:14 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 09C4C268FEB; Tue, 27 May 2025 11:33:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748345634; cv=none; b=KfZzhpaTKU1e0QbKK6yWYAu+0wuxnfoLYoIKF5Aw7nIfMPNAMgmx5vskcnNYVrBuOuFaMPqkAjb13cUtHFamwfm8qOtj9wXqho7B/nfBLIbgAMEqCxb1HZTMXkZwNizalVx3WZCknJ2aA8+cNHjCe5T/9w5knP3u3ora8VCvnts= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748345634; c=relaxed/simple; bh=yqoo79KYlvYVQ9kfd3gXqO3yXNwpPMOjnXlk+fFo8C8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=D5d6ZF7PgHqFMbAStDTKU/64H0qba4qvd+Vpo7MCRWQTp7QeXz+p3fcua4JR4/uY/ig7gQxxbx/vsS4d0YpPjDEN5beCEQlFJudAQajmBdU2wrQIQLE2qLP3K0YVicD9jnfnehSq5VYjvfUpDpv9iK8QHh5R6uTLA4VBoZPcp3U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=M6IwkkMM; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="M6IwkkMM" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C3A8EC4CEEF; Tue, 27 May 2025 11:33:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748345633; bh=yqoo79KYlvYVQ9kfd3gXqO3yXNwpPMOjnXlk+fFo8C8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=M6IwkkMMfCVNkYf68FkjX07OXiiSxzwu4FXqa2I6F3Zd2PYC4wTmAAS9SKOp0BMQp mkWSHmLSXyucmWuu64g6iRCEQ6EgcM0Ob7TT+6kSFPf4Rb3n/dyHWWlhMCcBG3VyaJ B/zyUv2e/KcVjwidgk0eiRWrKoVZafiauXGn+G7mqeZVNA4qvkFXcfipIg0ObH1lGx 5f/oMEFdrljAC3O8vjGzS+rnM/bx2dZGv7/1EVRelkvVhnwr+1MScMWAan/2doUvSE HOh91tL6RaQb2usSaRKoA9ciVigiDTgJbmKQcBj9UA7c+ytwPrcsh7nSeegeC79+dv tAEVZiR5AZZ7Q== From: Jeff Layton Date: Tue, 27 May 2025 07:33:35 -0400 Subject: [PATCH v10 4/9] ref_tracker: add a static classname string to each ref_tracker_dir Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250527-reftrack-dbgfs-v10-4-dc55f7705691@kernel.org> References: <20250527-reftrack-dbgfs-v10-0-dc55f7705691@kernel.org> In-Reply-To: <20250527-reftrack-dbgfs-v10-0-dc55f7705691@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5956; i=jlayton@kernel.org; h=from:subject:message-id; bh=yqoo79KYlvYVQ9kfd3gXqO3yXNwpPMOjnXlk+fFo8C8=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoNaMWWCoOVqEhlBz0PVC3++glT/fi8Pz2g9CX6 B+Xz+wld8uJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaDWjFgAKCRAADmhBGVaC FZo1D/sE1Id9PJ1OM7yBtjCLs0Ev0mmpU7AOhMSMaXkMpGgleGqZ8AOEcVU9aM0NDYj7dWvyQlt j56Zrz4qYAhObhY0wpgPiTDW6UJykRQR15+kUi+Tze3V0JaYVf7trgx1xDgbU0QRX+aTnwoXDsR Mu59TAc5+MZ8KnWnRI2LCZ87MFbvraBWICHc3qXzM/NgmKlIzKzsXWs3LdOq7s9wLlVaWxKNDOw HLaP0V5WDGta/nlNZgFgMxV6CRvagYkiaujlxozj7vfYS/kQs2zz9ELHwi4MYKJhi4J5nEFKE5K KtN01Zd3KHqMcHmGFTLP1ZUj6r1VAUMxwXx4qRWeYAlmXtLQdQegEqDc7YUcEaPtYW289C6Qri4 2mDV7AZWOLX3ISvPoAFTD99NWc72zMMfqCAH1WVe7W1nVm55oOTdXahjR1+1LDvC0YrG/gRdFI7 2aTKH4nKyiOpl8lDINRFra2VBmSsF7NbMHIyGkaGq5L36agSNv6d8fExsH8dK4G0waZ16mhU0UT iKYl0u781Hc6UDS7rwCPPcX6hUGJuWAgHnKWDDOwJLsia0d3FUgxZjmifW6zV2MNwIDdKZeyCb3 dlZu72fU1/kJtoNcM6u6YzsDmD7kdGiin/P9B3q6W7X+GjWKjFni4xLc2F2XVG2ICrdqoOCKmdY 1QkOFZzjfJz2WuA== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 A later patch in the series will be adding debugfs files for each ref_tracker that get created in ref_tracker_dir_init(). The format will be "class@%px". The current "name" string can vary between ref_tracker_dir objects of the same type, so it's not suitable for this purpose. Add a new "class" string to the ref_tracker dir that describes the the type of object (sans any individual info for that object). Signed-off-by: Jeff Layton --- drivers/gpu/drm/display/drm_dp_tunnel.c | 2 +- drivers/gpu/drm/i915/intel_runtime_pm.c | 3 ++- drivers/gpu/drm/i915/intel_wakeref.c | 2 +- include/linux/ref_tracker.h | 4 ++++ lib/test_ref_tracker.c | 2 +- net/core/dev.c | 2 +- net/core/net_namespace.c | 4 ++-- 7 files changed, 12 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/display/drm_dp_tunnel.c b/drivers/gpu/drm/disp= lay/drm_dp_tunnel.c index 076edf1610480275c62395334ab0536befa42f15..b9c12b8bf2a3e400b6d8e9d1841= 45834c603b9e1 100644 --- a/drivers/gpu/drm/display/drm_dp_tunnel.c +++ b/drivers/gpu/drm/display/drm_dp_tunnel.c @@ -1920,7 +1920,7 @@ drm_dp_tunnel_mgr_create(struct drm_device *dev, int = max_group_count) } =20 #ifdef CONFIG_DRM_DISPLAY_DP_TUNNEL_STATE_DEBUG - ref_tracker_dir_init(&mgr->ref_tracker, 16, "dptun"); + ref_tracker_dir_init(&mgr->ref_tracker, 16, "drm_dptun", "dptun"); #endif =20 for (i =3D 0; i < max_group_count; i++) { diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915= /intel_runtime_pm.c index 8d9f4c410546e4144d4bc8bbc6696f3bd9498848..3fdab3b44c08cea16ac2f73aafc= 2bea2ffbb19e7 100644 --- a/drivers/gpu/drm/i915/intel_runtime_pm.c +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c @@ -59,7 +59,8 @@ static struct drm_i915_private *rpm_to_i915(struct intel_= runtime_pm *rpm) =20 static void init_intel_runtime_pm_wakeref(struct intel_runtime_pm *rpm) { - ref_tracker_dir_init(&rpm->debug, INTEL_REFTRACK_DEAD_COUNT, dev_name(rpm= ->kdev)); + ref_tracker_dir_init(&rpm->debug, INTEL_REFTRACK_DEAD_COUNT, + "intel_runtime_pm", dev_name(rpm->kdev)); } =20 static intel_wakeref_t diff --git a/drivers/gpu/drm/i915/intel_wakeref.c b/drivers/gpu/drm/i915/in= tel_wakeref.c index 07e81be4d3920febece34709c63a63204a41583c..5269e64c58a49884f5d71255754= 6272bfdeb8417 100644 --- a/drivers/gpu/drm/i915/intel_wakeref.c +++ b/drivers/gpu/drm/i915/intel_wakeref.c @@ -114,7 +114,7 @@ void __intel_wakeref_init(struct intel_wakeref *wf, "wakeref.work", &key->work, 0); =20 #if IS_ENABLED(CONFIG_DRM_I915_DEBUG_WAKEREF) - ref_tracker_dir_init(&wf->debug, INTEL_REFTRACK_DEAD_COUNT, name); + ref_tracker_dir_init(&wf->debug, INTEL_REFTRACK_DEAD_COUNT, "intel_wakere= f", name); #endif } =20 diff --git a/include/linux/ref_tracker.h b/include/linux/ref_tracker.h index a0a1ee43724ffa00e60c116be18e481bfe1d1455..3968f993db81e95c0d58c814543= 11841c1b9cd35 100644 --- a/include/linux/ref_tracker.h +++ b/include/linux/ref_tracker.h @@ -19,6 +19,7 @@ struct ref_tracker_dir { bool dead; struct list_head list; /* List of active trackers */ struct list_head quarantine; /* List of dead trackers */ + const char *class; /* object classname */ char name[32]; #endif }; @@ -27,6 +28,7 @@ struct ref_tracker_dir { =20 static inline void ref_tracker_dir_init(struct ref_tracker_dir *dir, unsigned int quarantine_count, + const char *class, const char *name) { INIT_LIST_HEAD(&dir->list); @@ -36,6 +38,7 @@ static inline void ref_tracker_dir_init(struct ref_tracke= r_dir *dir, dir->dead =3D false; refcount_set(&dir->untracked, 1); refcount_set(&dir->no_tracker, 1); + dir->class =3D class; strscpy(dir->name, name, sizeof(dir->name)); stack_depot_init(); } @@ -60,6 +63,7 @@ int ref_tracker_free(struct ref_tracker_dir *dir, =20 static inline void ref_tracker_dir_init(struct ref_tracker_dir *dir, unsigned int quarantine_count, + const char *class, const char *name) { } diff --git a/lib/test_ref_tracker.c b/lib/test_ref_tracker.c index b983ceb12afcb84ad60360a1e6fec0072e78ef79..d263502a4c1db248f64a66a468e= 96c8e4cffab25 100644 --- a/lib/test_ref_tracker.c +++ b/lib/test_ref_tracker.c @@ -64,7 +64,7 @@ static int __init test_ref_tracker_init(void) { int i; =20 - ref_tracker_dir_init(&ref_dir, 100, "selftest"); + ref_tracker_dir_init(&ref_dir, 100, "selftest", "selftest"); =20 timer_setup(&test_ref_tracker_timer, test_ref_tracker_timer_func, 0); mod_timer(&test_ref_tracker_timer, jiffies + 1); diff --git a/net/core/dev.c b/net/core/dev.c index 3eb4e945f3120f26605a0b407cb98b12492bc61e..bac9d29486556023cd99f5101b9= 6b052acb9ba70 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -11713,7 +11713,7 @@ struct net_device *alloc_netdev_mqs(int sizeof_priv= , const char *name, =20 dev->priv_len =3D sizeof_priv; =20 - ref_tracker_dir_init(&dev->refcnt_tracker, 128, name); + ref_tracker_dir_init(&dev->refcnt_tracker, 128, "netdev", name); #ifdef CONFIG_PCPU_DEV_REFCNT dev->pcpu_refcnt =3D alloc_percpu(int); if (!dev->pcpu_refcnt) diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index 42ee7fce3d95b5a2756d6a3780edba070f01ddb6..8708eb975295ffb78de35fcf4ab= ef7cc281f5a51 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -403,8 +403,8 @@ static __net_init void preinit_net(struct net *net, str= uct user_namespace *user_ { refcount_set(&net->passive, 1); refcount_set(&net->ns.count, 1); - ref_tracker_dir_init(&net->refcnt_tracker, 128, "net refcnt"); - ref_tracker_dir_init(&net->notrefcnt_tracker, 128, "net notrefcnt"); + ref_tracker_dir_init(&net->refcnt_tracker, 128, "net_refcnt", "net_refcnt= "); + ref_tracker_dir_init(&net->notrefcnt_tracker, 128, "net_notrefcnt", "net_= notrefcnt"); =20 get_random_bytes(&net->hash_mix, sizeof(u32)); net->dev_base_seq =3D 1; --=20 2.49.0 From nobody Fri Dec 19 20:51:14 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0A5C626A09A; Tue, 27 May 2025 11:33:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748345636; cv=none; b=gCJims7uF92mq5HSRJno0Vd/WnFRzHl/QoVW7PjW+RwQoxAtoE80mmAUgSp3XS/1jbVDwkYJ3kOt3I/YkPSdq7m+FdfFHbXFSvnWBrpZ6nMxBk0EAy2z19LJMLWGWfCtkzvBJ9Y7K4GZSSmwnDa4AbYmDMO0PD95h28ASwCtVTo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748345636; c=relaxed/simple; bh=sWMiF3Jp8psrx0vXllDtK7/+QK0kGDwaFLz+zCQWWb4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=P+XUjcmFE2SlsyexxkrVz7VcxhV1UoA/yV0kssyZ4BU46mhDgCVMreZ7KQB+qJOBzsLephSUJ6b1cUWYp/qpHSYR1K7wL+aSRWtnm8sn09T6whTnNI/Ivo/qtq8eU+lwD5p8Q/21eXCPI1LKh8zccjSXJCSNhwoTzaltkgwJhxA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BDIYW+fw; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="BDIYW+fw" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B9EEDC4CEE9; Tue, 27 May 2025 11:33:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748345635; bh=sWMiF3Jp8psrx0vXllDtK7/+QK0kGDwaFLz+zCQWWb4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=BDIYW+fwqMI09RZYAciuHlIbBjnGW9chKRJIXyJ+JL5+YeWSu83O2JWwx7h2Bn3tG MIVhCIiFJI6aUIFYShuQbqTHqW1fkefm2y7ULlDcdsyrTX0y762VQqJ5MHudUAaAf7 3isfJvgj0+MFTq9c5MLIR7BR/MGDMoS8xyEcHpFhlJMOrwSgw+S0F+AWoGGRbcfUpW 0RVSXf13LU7h9r1eyptqijHfdpEVQspG1PGBOvBv1Barfgsg2YLhls2VCj8KlKe044 tSBqWFiZ9Ym43+pbLHlx0RyEhBMMiRWSXSkC5uwhz76fEZHJHc10+hwKnuEyfKev1W CVNkb6+8ge1Nw== From: Jeff Layton Date: Tue, 27 May 2025 07:33:36 -0400 Subject: [PATCH v10 5/9] ref_tracker: allow pr_ostream() to print directly to a seq_file Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250527-reftrack-dbgfs-v10-5-dc55f7705691@kernel.org> References: <20250527-reftrack-dbgfs-v10-0-dc55f7705691@kernel.org> In-Reply-To: <20250527-reftrack-dbgfs-v10-0-dc55f7705691@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1919; i=jlayton@kernel.org; h=from:subject:message-id; bh=sWMiF3Jp8psrx0vXllDtK7/+QK0kGDwaFLz+zCQWWb4=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoNaMWF/87pk7ph2I1igNw6LWz3m9XwND5YyFpF EGY0dEcpkKJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaDWjFgAKCRAADmhBGVaC FbrOEADTxFmBBAPCa8mCL+K+h5Tw44w48pwSG7qK06+nCX6ur7yrdfsYSzhaLQCl43wJmDh9HSC Asnf0wG+MEtPsrEWgW21rMHnMpXAFMw/FdaDs6eKYtd0nX2aP1GzKwNqXTvwTVMI4xIQRPh+XUv j3yOeqNFRPwVrJnHwnIDBkHRoY2PKtqJUnC9kdGl9wSCXlflVF1GQmCn4NNiZgWdR5uijz7+1M+ RENwIZrlWPtNK0geqixyhMucaLc4ZsPMsWSwBOPSRPUOtrsqMS9mC2Hg1csMiKJXU5ZV44copG1 XyhwfnkGWNF41vK+2piuYGdpIglp8cT5s/QlKFvFjllJtdfv/iv5CgRzinP6vglJnhBj9h/FlzM C7hygnr31iY1uT5TDSjBBHFb197UU9lijmAt20rqgFqiQ8RjmGsbL/VtdGA4aIV4GzY/e+0NOa0 X8CQuLtD5h23YSZWAkdgm15DuJ7Ql13ELIDYoT6kg8u/ycQXb7uscSuNFQoFwDbvnLKEx2BN0md jBLoYa8INmRHFrDGDGfIabGPYxcauchE5SLlNXrWt5ReDALNW1/WB2uknh2mjBbJC1STqVGaWON Jr1mJJbqbECghXmff91VNiel/jQdoHOPpv73RZs/lamsm0vUQo0GwfyeL0HlwyW6XFHX+xm9rPG AS3QH+Sd+fUTvvQ== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 Allow pr_ostream to also output directly to a seq_file without an intermediate buffer. The first caller of +ref_tracker_dir_seq_print() will come in a later patch, so mark that __maybe_unused for now. That designation will be removed once it is used. Reviewed-by: Andrew Lunn Signed-off-by: Jeff Layton --- lib/ref_tracker.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c index 607718d00ffa74bd6d9abf97e913abcfd56dd1c8..6e85e7eb347d86775ba38a72dad= 7159f9ac41ed9 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -8,6 +8,7 @@ #include #include #include +#include =20 #define REF_TRACKER_STACK_ENTRIES 16 #define STACK_BUF_SIZE 1024 @@ -66,6 +67,7 @@ struct ostream { void __ostream_printf (*func)(struct ostream *stream, char *fmt, ...); char *prefix; char *buf; + struct seq_file *seq; int size, used; }; =20 @@ -300,6 +302,30 @@ EXPORT_SYMBOL_GPL(ref_tracker_free); =20 static struct dentry *ref_tracker_debug_dir =3D (struct dentry *)-ENOENT; =20 +static void __ostream_printf pr_ostream_seq(struct ostream *stream, char *= fmt, ...) +{ + va_list args; + + va_start(args, fmt); + seq_vprintf(stream->seq, fmt, args); + va_end(args); +} + +static __maybe_unused int +ref_tracker_dir_seq_print(struct ref_tracker_dir *dir, struct seq_file *se= q) +{ + struct ostream os =3D { .func =3D pr_ostream_seq, + .prefix =3D "", + .seq =3D seq }; + unsigned long flags; + + spin_lock_irqsave(&dir->lock, flags); + __ref_tracker_dir_pr_ostream(dir, 16, &os); + spin_unlock_irqrestore(&dir->lock, flags); + + return os.used; +} + static int __init ref_tracker_debugfs_init(void) { ref_tracker_debug_dir =3D debugfs_create_dir("ref_tracker", NULL); --=20 2.49.0 From nobody Fri Dec 19 20:51:14 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EF1BA26FD97; Tue, 27 May 2025 11:33:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748345638; cv=none; b=Qc5FvZz6N8KdgcxThFOb2/+m/ABLMXQqLHmLrWcql2o8jMTIlabRzp2P/wMGrl2eahydsm4KC1qu5YjeGeJ79EzHrNN8W9QWLdmAwF96/av+PyIu3p+MhLC/yf0t9NYtCrqMa/DxQ6VD7wnkiKS530tCz27YefvHMyIyMoLz394= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748345638; c=relaxed/simple; bh=YUzGN4pDQEVUn13ezU+iyAv9BvSGVVgHmEotghHtWUM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=udHwWVYXuWJX5DqVHUqlgFlY+X2xv5V3n6Eq8LFZ6qITptbzTo5K+2qkLAuAp3X/jDTZoUEF3MQ9jk/F/2AJgwKnkMxmlj68nWOOOy/rS+qlVQHZsWo9zhmsAPqk20b41e1WVwganePQy/ql5Re9zjVt4Xc/GCiXlYZx4PBxSj4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mnjhh0za; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="mnjhh0za" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B0DBFC4CEEF; Tue, 27 May 2025 11:33:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748345637; bh=YUzGN4pDQEVUn13ezU+iyAv9BvSGVVgHmEotghHtWUM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=mnjhh0zaMGonQFqvwUhynv4VlkBwe3VguzvYDDybEEuQCNzBzoypxem9mcvi6Buas mqVbhG4QJONLh9w4emj/m6QqLxFAadJsM3Z/0LCxpnFX7LY7RtAlgevgKOI7NbCW5h cb7FJpU8CMnsMeLam4vbQUh/d8A71ZVhDt9Nm00yF715FU0hs7yj1m0SPEDO7+xqdv We0MF331ICMRIWN2k2Xy4cVAWLJiQWDpQudUbSNw8s+npuHSi2usz8vyCCD/5tNU7c q9J3CJs2TgWC/WkkDV0Q1KDdWwtSaQdk8V9W5NPefOFuRxhi6wpgBaL2nha0wIBmHZ /XhH7OClK1NEQ== From: Jeff Layton Date: Tue, 27 May 2025 07:33:37 -0400 Subject: [PATCH v10 6/9] ref_tracker: automatically register a file in debugfs for a ref_tracker_dir Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250527-reftrack-dbgfs-v10-6-dc55f7705691@kernel.org> References: <20250527-reftrack-dbgfs-v10-0-dc55f7705691@kernel.org> In-Reply-To: <20250527-reftrack-dbgfs-v10-0-dc55f7705691@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5577; i=jlayton@kernel.org; h=from:subject:message-id; bh=YUzGN4pDQEVUn13ezU+iyAv9BvSGVVgHmEotghHtWUM=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoNaMWmtSvO1R7JKPUjs4Ie2DNnBBP+wQYlA5Oy +2biAmO8yuJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaDWjFgAKCRAADmhBGVaC FV5OEADXU6SKcSx+Sw+A0vGtQ8gLPZkPN2+2XCy6kqyExhbKtdj33oKXgZ2vYjav430Y6UIi0Dm 9VKBhL/f9IPdqhixHjSobxLZRX4DigpyD2FMY6vr+ET5bYRrVCp9oNEEy5vP+fyNxzhZafq6itD aw3TrPSiLFQhMFqw2gURNhj/p/PBGZbucZPtQ7WVTFPah8DobGtLflFyZEK58zT20xYfmy8Tc20 /I1NPhCR4aG+/13yauWyCJqrBDTiw/m1LK4Tzb4G0dgb97r4GNhzEfGBy2nOkoaRPXodLDNLtbB dnCXZ9EiIutuHRZGaS7ciQW1Y/Q0AH1kyzU7A0qnOSR7WMQQV8bX2wcxbcUvju2/o8361NHBkWh PNcuOikMD0wGFGb1qzDM3D0rUXh1KQv7lYzrHV4VEcHT185wm/bS69ZSVfoh87NbTqN16sbFQW5 2+GqI5hKtw31CZBVxVVdy0CPPwY7Un/3UwFS8D+RhwnFsSg5vMfLiRNK6oQT5DuRkRM6McWhNvT Uz5dDfZiC+tnDvJGch87X0nD4Kr7ShToU7DUtRMk0DhoLXAAmJpzLdIRuoE9bVibg8F/cM3BUpu 06C7JFLqI3WWQHkVJKO/KYm3ObxRJYwj6G8XzsmBrB/9CbW527L9n9K62t7N+N0+Ki6C94OhMD/ L/ZqUJOZ0ud1NEA== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 Currently, there is no convenient way to see the info that the ref_tracking infrastructure collects. Attempt to create a file in debugfs when called from ref_tracker_dir_init(). The file is given the name "class@%px", as having the unmodified address is helpful for debugging. This should be safe since this directory is only accessible by root If debugfs file creation fails, a pr_warn will be isssued. Signed-off-by: Jeff Layton --- include/linux/ref_tracker.h | 23 ++++++++++++++ lib/ref_tracker.c | 73 +++++++++++++++++++++++++++++++++++++++++= ++-- 2 files changed, 94 insertions(+), 2 deletions(-) diff --git a/include/linux/ref_tracker.h b/include/linux/ref_tracker.h index 3968f993db81e95c0d58c81454311841c1b9cd35..dd289fdda12b1a10197912f5796= f97002e785aaf 100644 --- a/include/linux/ref_tracker.h +++ b/include/linux/ref_tracker.h @@ -20,12 +20,27 @@ struct ref_tracker_dir { struct list_head list; /* List of active trackers */ struct list_head quarantine; /* List of dead trackers */ const char *class; /* object classname */ +#ifdef CONFIG_DEBUG_FS + struct dentry *dentry; +#endif char name[32]; #endif }; =20 #ifdef CONFIG_REF_TRACKER =20 +#ifdef CONFIG_DEBUG_FS + +void ref_tracker_dir_debugfs(struct ref_tracker_dir *dir); + +#else /* CONFIG_DEBUG_FS */ + +static inline void ref_tracker_dir_debugfs(struct ref_tracker_dir *dir) +{ +} + +#endif /* CONFIG_DEBUG_FS */ + static inline void ref_tracker_dir_init(struct ref_tracker_dir *dir, unsigned int quarantine_count, const char *class, @@ -39,7 +54,11 @@ static inline void ref_tracker_dir_init(struct ref_track= er_dir *dir, refcount_set(&dir->untracked, 1); refcount_set(&dir->no_tracker, 1); dir->class =3D class; +#ifdef CONFIG_DEBUG_FS + dir->dentry =3D NULL; +#endif strscpy(dir->name, name, sizeof(dir->name)); + ref_tracker_dir_debugfs(dir); stack_depot_init(); } =20 @@ -68,6 +87,10 @@ static inline void ref_tracker_dir_init(struct ref_track= er_dir *dir, { } =20 +static inline void ref_tracker_dir_debugfs(struct ref_tracker_dir *dir) +{ +} + static inline void ref_tracker_dir_exit(struct ref_tracker_dir *dir) { } diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c index 6e85e7eb347d86775ba38a72dad7159f9ac41ed9..1df12625d80cc7cff65d9f6be89= e1dd5c5ffb7f6 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -29,6 +29,14 @@ struct ref_tracker_dir_stats { } stacks[]; }; =20 +#ifdef CONFIG_DEBUG_FS +static void ref_tracker_debugfs_remove(struct ref_tracker_dir *dir); +#else +static inline void ref_tracker_debugfs_remove(struct ref_tracker_dir *dir) +{ +} +#endif + static struct ref_tracker_dir_stats * ref_tracker_get_stats(struct ref_tracker_dir *dir, unsigned int limit) { @@ -184,6 +192,7 @@ void ref_tracker_dir_exit(struct ref_tracker_dir *dir) bool leak =3D false; =20 dir->dead =3D true; + ref_tracker_debugfs_remove(dir); spin_lock_irqsave(&dir->lock, flags); list_for_each_entry_safe(tracker, n, &dir->quarantine, head) { list_del(&tracker->head); @@ -311,8 +320,7 @@ static void __ostream_printf pr_ostream_seq(struct ostr= eam *stream, char *fmt, . va_end(args); } =20 -static __maybe_unused int -ref_tracker_dir_seq_print(struct ref_tracker_dir *dir, struct seq_file *se= q) +static int ref_tracker_dir_seq_print(struct ref_tracker_dir *dir, struct s= eq_file *seq) { struct ostream os =3D { .func =3D pr_ostream_seq, .prefix =3D "", @@ -326,6 +334,67 @@ ref_tracker_dir_seq_print(struct ref_tracker_dir *dir,= struct seq_file *seq) return os.used; } =20 +static int ref_tracker_debugfs_show(struct seq_file *f, void *v) +{ + struct ref_tracker_dir *dir =3D f->private; + + return ref_tracker_dir_seq_print(dir, f); +} + +static int ref_tracker_debugfs_open(struct inode *inode, struct file *filp) +{ + struct ref_tracker_dir *dir =3D inode->i_private; + + return single_open(filp, ref_tracker_debugfs_show, dir); +} + +static const struct file_operations ref_tracker_debugfs_fops =3D { + .owner =3D THIS_MODULE, + .open =3D ref_tracker_debugfs_open, + .read =3D seq_read, + .llseek =3D seq_lseek, + .release =3D single_release, +}; + +/** + * ref_tracker_dir_debugfs - create debugfs file for ref_tracker_dir + * @dir: ref_tracker_dir to be associated with debugfs file + * + * In most cases, a debugfs file will be created automatically for every + * ref_tracker_dir. If the object was created before debugfs is brought up + * then that may fail. In those cases, it is safe to call this at a later + * time to create the file. + */ +void ref_tracker_dir_debugfs(struct ref_tracker_dir *dir) +{ + char name[NAME_MAX + 1]; + int ret; + + /* No-op if already created */ + if (!IS_ERR_OR_NULL(dir->dentry)) + return; + + ret =3D snprintf(name, sizeof(name), "%s@%px", dir->class, dir); + name[sizeof(name) - 1] =3D '\0'; + + if (ret < sizeof(name)) + dir->dentry =3D debugfs_create_file(name, S_IFREG | 0400, + ref_tracker_debug_dir, dir, + &ref_tracker_debugfs_fops); + else + dir->dentry =3D ERR_PTR(-ENAMETOOLONG); + + if (IS_ERR(dir->dentry)) + pr_warn("ref_tracker: unable to create debugfs file for %s: %pe\n", + name, dir->dentry); +} +EXPORT_SYMBOL(ref_tracker_dir_debugfs); + +static void ref_tracker_debugfs_remove(struct ref_tracker_dir *dir) +{ + debugfs_remove(dir->dentry); +} + static int __init ref_tracker_debugfs_init(void) { ref_tracker_debug_dir =3D debugfs_create_dir("ref_tracker", NULL); --=20 2.49.0 From nobody Fri Dec 19 20:51:14 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E3EAA270EAB; Tue, 27 May 2025 11:33:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748345640; cv=none; b=azhjJSMpqqomZTfy+b51UiYyKXGJZeP9YPSqA/FpuUodYtYUFJJD4DW7S8+Sts3WlTX3NdrgKA/9b+3pDleiwUC2oMCGN0R9TZWfaHNR8P0DLaVpqxRzZJtDxEllrRfhDTzm0GUHhHF2GG4Rowx3Uk7fqAaTX1oghm+NORahyOc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748345640; c=relaxed/simple; bh=G4yxeje4skzZFbWd4GKautKhwMx5ZwXU4VPyyJVpR7k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=e9W1uxWY4NqKUz4ropzpQHhrEnu3vIzg/8+p0OP+KbRV6aWTAaUCqH06iXYHkSbWlLdQr5V09D0L0I/BdiBS8anRHzEsrZbXBvWv/lEbTxwfy8XTkqV4IOpgR+fL3Lny+pifaiyOlaTUAY+k2/tOty2DutH/vyy9J9fwtJ+vFnk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Aw0iSSm1; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Aw0iSSm1" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A7450C4CEE9; Tue, 27 May 2025 11:33:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748345639; bh=G4yxeje4skzZFbWd4GKautKhwMx5ZwXU4VPyyJVpR7k=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Aw0iSSm1S0t3tCblVTk5XvM24Gwf7K/wfMLepIoY38//FCey7SfKwzIHcOFJG3PKz mvgsicZWYEJchF7QTR38ihY904D6I9JVfbLcOVVS6IWpDaJw6gn0O8rMPpQ/4jVEaX 5BdedD+R7OlPaUzFGpD31zcP9Deb8bpOh2sdNhVbomfktoD8Jkrw6mxmGspuBVlAbw 9rvDmCQ5i4P7cZvuM81UFSGn2VFTsSlPFxi4bmA2FuoorxoNc7brn0NGwiF5SnCNJa gCpFc9mZaJYBT44lnA6MHo4Mmmj1XboBvkhzUuMQd1ZA7RVAcu84PpgpIOlAXy46VF Wy/vvzZTETtpA== From: Jeff Layton Date: Tue, 27 May 2025 07:33:38 -0400 Subject: [PATCH v10 7/9] ref_tracker: add a way to create a symlink to the ref_tracker_dir debugfs file Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250527-reftrack-dbgfs-v10-7-dc55f7705691@kernel.org> References: <20250527-reftrack-dbgfs-v10-0-dc55f7705691@kernel.org> In-Reply-To: <20250527-reftrack-dbgfs-v10-0-dc55f7705691@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3234; i=jlayton@kernel.org; h=from:subject:message-id; bh=G4yxeje4skzZFbWd4GKautKhwMx5ZwXU4VPyyJVpR7k=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoNaMXBjdm+wdW+yNOSkgrF7FG2s7lNnUdusebv HDFwNef7JCJAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaDWjFwAKCRAADmhBGVaC Fa4YD/9386ZVYoZVs5AQHOlKBk8PipdaE8wAGdwf8LprXtukpjpXE81e4Ffc6BqX5EKeib+wAjA XrNT4y8hcGNJRnsjv0VDofYhGPsuB9k+/A70ktsqWzPneIZ2k9UE2v26984NNUS/Q9h7zFPlMfB TZ641QJhGQss8zGnOO3XNF1ts0GpCRsUBTjfDPoAOVv+kG2wu/Tk0uW9oxH01ovdJ9ESy0m4aUh d4kZ5LLNeYh6EsZKZfzP7MTMbJpHgwbptKRTekvGc5goKxG1wosGdMv0CBzu4J9+bGfKEWKrOfj EkvCJIrUmLVGJvUiPVYiMgQLld1uf4bCB068PYM9uHOXSPOsoQ4J/XhvfQ4Z3I9RiysflJhZRNr hRyOG8XLiz74JCFZGC5xNEMrbi1PRlIp3viZbJnyGsWvVbVStDD9Ru9AA7oijBtrk6f2Y++cU+b 1eFecZTAWB8LdLHzbexk1aLoZPCI6lGuMrUY/XdU0RiZyiVuc1qGSDH1VYft6rt3ZBUaRimqNuT OVCS9yV6wR2LmryDteeooDfbXsrAPbdTNRI9/eTC+VXzKw6A0gxonbafwN6aHjNoEvYb1SMomMw Y+XB0xIkPWP7FcMjmLs7S4DkiYWZKsktTwyokH6cvOuhbwSN7Eacyi4gm/h+cTkH9P1ijH99Sv/ z9qjysyjvSD7Zmw== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 Add the ability for a subsystem to add a user-friendly symlink that points to a ref_tracker_dir's debugfs file. Signed-off-by: Jeff Layton --- include/linux/ref_tracker.h | 13 +++++++++++++ lib/ref_tracker.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/include/linux/ref_tracker.h b/include/linux/ref_tracker.h index dd289fdda12b1a10197912f5796f97002e785aaf..ddc5a7b2bd84692bbc1e1ae6767= 4ec2c6857e1ec 100644 --- a/include/linux/ref_tracker.h +++ b/include/linux/ref_tracker.h @@ -22,6 +22,7 @@ struct ref_tracker_dir { const char *class; /* object classname */ #ifdef CONFIG_DEBUG_FS struct dentry *dentry; + struct dentry *symlink; #endif char name[32]; #endif @@ -32,6 +33,7 @@ struct ref_tracker_dir { #ifdef CONFIG_DEBUG_FS =20 void ref_tracker_dir_debugfs(struct ref_tracker_dir *dir); +void ref_tracker_dir_symlink(struct ref_tracker_dir *dir, const char *fmt,= ...); =20 #else /* CONFIG_DEBUG_FS */ =20 @@ -39,6 +41,11 @@ static inline void ref_tracker_dir_debugfs(struct ref_tr= acker_dir *dir) { } =20 +static inline __ostream_printf +void ref_tracker_dir_symlink(struct ref_tracker_dir *dir, const char *fmt,= ...) +{ +} + #endif /* CONFIG_DEBUG_FS */ =20 static inline void ref_tracker_dir_init(struct ref_tracker_dir *dir, @@ -56,6 +63,7 @@ static inline void ref_tracker_dir_init(struct ref_tracke= r_dir *dir, dir->class =3D class; #ifdef CONFIG_DEBUG_FS dir->dentry =3D NULL; + dir->symlink =3D NULL; #endif strscpy(dir->name, name, sizeof(dir->name)); ref_tracker_dir_debugfs(dir); @@ -91,6 +99,11 @@ static inline void ref_tracker_dir_debugfs(struct ref_tr= acker_dir *dir) { } =20 +static inline __ostream_printf +void ref_tracker_dir_symlink(struct ref_tracker_dir *dir, const char *fmt,= ...) +{ +} + static inline void ref_tracker_dir_exit(struct ref_tracker_dir *dir) { } diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c index 1df12625d80cc7cff65d9f6be89e1dd5c5ffb7f6..5e84e5fd78e147a036d4adb511e= 657da07866a55 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -390,8 +390,36 @@ void ref_tracker_dir_debugfs(struct ref_tracker_dir *d= ir) } EXPORT_SYMBOL(ref_tracker_dir_debugfs); =20 +void __ostream_printf ref_tracker_dir_symlink(struct ref_tracker_dir *dir,= const char *fmt, ...) +{ + char name[NAME_MAX + 1]; + va_list args; + int ret; + + /* Already created, or dentry doesn't exist? Do nothing */ + if (!IS_ERR_OR_NULL(dir->symlink) || IS_ERR_OR_NULL(dir->dentry)) + return; + + va_start(args, fmt); + ret =3D vsnprintf(name, sizeof(name), fmt, args); + va_end(args); + name[sizeof(name) - 1] =3D '\0'; + + if (ret < sizeof(name)) + dir->symlink =3D debugfs_create_symlink(name, ref_tracker_debug_dir, + dir->dentry->d_name.name); + else + dir->symlink =3D ERR_PTR(-ENAMETOOLONG); + + if (IS_ERR(dir->symlink)) + pr_warn("ref_tracker: unable to create debugfs symlink for %s: %pe\n", + name, dir->symlink); +} +EXPORT_SYMBOL(ref_tracker_dir_symlink); + static void ref_tracker_debugfs_remove(struct ref_tracker_dir *dir) { + debugfs_remove(dir->symlink); debugfs_remove(dir->dentry); } =20 --=20 2.49.0 From nobody Fri Dec 19 20:51:14 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6A33F258CD8; Tue, 27 May 2025 11:34:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748345642; cv=none; b=LpD+NRnlXep6bH7PggLok/UIbfzs6l/LeHw7QNfQUEeL8k41xVovXd2+uGYXH8fkkm8YOAZpWmqOZjoN2Trv3L2NfrSlmCoyu+7B6Q4wvipp/BuYL3HVa5qhHJPE7nPrW/rp35rGpGpLpa/NA83QEGv3gufmAZEJWVjWy6Pbj8g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748345642; c=relaxed/simple; bh=1AohjNsJ/5u7SWnSQ59F0LOjK/wKNx2WHjos8H9MEes=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=M08Msh0M1BLF/ysuW9XkHVZEsriJP3DMEwKJxt+1pNKydW+BvKrG35CwnlUPcdSzL4GyWp9YwuYxeizdyjSMCr+yUKFTCFDBW7F7r7fA+ftz78CiW9oRLZM7zTFTtBjH33D/qon2URUtJ0aeflNchSpyi+hkzwWhlFLY9vSn4lo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=P/Qd9G2z; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="P/Qd9G2z" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9E14EC4CEF6; Tue, 27 May 2025 11:33:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748345641; bh=1AohjNsJ/5u7SWnSQ59F0LOjK/wKNx2WHjos8H9MEes=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=P/Qd9G2zvDpVWcyRAxVqjoE4w3rXgBziU37W5NbgLORAm8RSpoyDaPmetz64T450S 8W4d1+J1WXbT8Dnb8XkO92tGGLlavpAlKfd8lWIxZqF7hw18V8sXUhZn5b5JrrYYsm bNG4CLpuXaHnmpvD5xyHfeIwbyC+HvdmPoGdZJ+k1PxbBu55lpldJFpChlOTAl4gNb 1Mpzoz2JGjx5agCZqbT1wyKc8lJFQzAfn5bDxkIn5SoWrxqLrgq8NW/c9OXZN4UNA0 3s4bfCKqNOsxCfhMlEqkIwedcLSvwvK/RFR8xZpo+Rll2jcss91meTypABrppZb+GY 5VRPXu7YeLd2Q== From: Jeff Layton Date: Tue, 27 May 2025 07:33:39 -0400 Subject: [PATCH v10 8/9] net: add symlinks to ref_tracker_dir for netns Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250527-reftrack-dbgfs-v10-8-dc55f7705691@kernel.org> References: <20250527-reftrack-dbgfs-v10-0-dc55f7705691@kernel.org> In-Reply-To: <20250527-reftrack-dbgfs-v10-0-dc55f7705691@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1849; i=jlayton@kernel.org; h=from:subject:message-id; bh=1AohjNsJ/5u7SWnSQ59F0LOjK/wKNx2WHjos8H9MEes=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoNaMXOK09R4jSfVB8gdNvrjW+aO6jrUnbP/1CY t50wMnUT/+JAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaDWjFwAKCRAADmhBGVaC FWixD/0XOX0kufIOnTf3V6fk9Dj2Z799XOtudAidPehZJIYIpgM+dc/y4A0UGc6+g4tzsFajs/d +EbxW+wxUHHECScP0IYHUAH28rjwGO1+f3lcMuLwKnBBmT1YJ4B/jGjyvVOD4QvyprabwW1ZT16 Ai4GJrycV3b3Rj8HSxqszYJYEwriLCk6Dhspsfc1JLbAil7z023a09hSxK0WNTpuyWMzn6nYyLt a/6adaQ80qAAMMWh3ExXjMQOcI0ZLfEwg8JGKN+fGgEDG+Ykiiq3RSM3gCsJXbcMbL0MetJL0T6 iIe7pvaBin/cXCToQV9ovOY+bJJJVcxDJn4HxZmb4fF7FGpJm8MF8Zts6zhlpvwEIG0+8BKdj6A Mn0neHMNrBPjT7Wha87sOomrhVsOXmSxj5Psqymw3t5U9Hb6ocsX+hlJRn5IdDb+nZ1aWsTb/KI gh0JBC1CboF0FDEyj6rYSyRG8nORrrNPVATqd1tENMP6qck3pAB2FBZkN3Occw8WKTJdKJlRND2 VeD2JrZ/c7RIj85RloOhGKCYd0/ccDBtPCBdfmr1TJvCr8YaJuOyQH8g1My1nVugBRkFHMZchc9 +JLZTQUit3FPgvYwt8ZtR2TR3VUzr62fzQnhB0Bb/t7EHhtHhbITaGuIYUFdWty4gAfNuciD4Fg 4ivEwns6h1Z5WFw== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 After assigning the inode number to the namespace, use it to create a unique name for each netns refcount tracker with the ns.inum and net_cookie values in it, and register a symlink to the debugfs file for it. init_net is registered before the ref_tracker dir is created, so add a late_initcall() to register its files and symlinks. Signed-off-by: Jeff Layton --- net/core/net_namespace.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index 8708eb975295ffb78de35fcf4abef7cc281f5a51..39b01af90d240df48827e5c3159= c3e2253e0a44d 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -791,12 +791,40 @@ struct net *get_net_ns_by_pid(pid_t pid) } EXPORT_SYMBOL_GPL(get_net_ns_by_pid); =20 +#ifdef CONFIG_NET_NS_REFCNT_TRACKER +static void net_ns_net_debugfs(struct net *net) +{ + ref_tracker_dir_symlink(&net->refcnt_tracker, "netns--%lx-%u-refcnt", + net->net_cookie, net->ns.inum); + ref_tracker_dir_symlink(&net->notrefcnt_tracker, "netns-%lx-%u-notrefcnt", + net->net_cookie, net->ns.inum); +} + +static int __init init_net_debugfs(void) +{ + ref_tracker_dir_debugfs(&init_net.refcnt_tracker); + ref_tracker_dir_debugfs(&init_net.notrefcnt_tracker); + net_ns_net_debugfs(&init_net); + return 0; +} +late_initcall(init_net_debugfs); +#else +static void net_ns_net_debugfs(struct net *net) +{ +} +#endif + static __net_init int net_ns_net_init(struct net *net) { + int ret; + #ifdef CONFIG_NET_NS net->ns.ops =3D &netns_operations; #endif - return ns_alloc_inum(&net->ns); + ret =3D ns_alloc_inum(&net->ns); + if (!ret) + net_ns_net_debugfs(net); + return ret; } =20 static __net_exit void net_ns_net_exit(struct net *net) --=20 2.49.0 From nobody Fri Dec 19 20:51:14 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 723662749CB; Tue, 27 May 2025 11:34:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748345643; cv=none; b=A9EGI09CeiiGUlziCHKfCqDc1lzPtl6uD4IytqvUFzEKwBP9u48+uUIJoKi+mUBAP869VWEM/OifWkng0prvuK1vTZCs0fjc9reYozGQIRGYdbydNLXWAMYvOUvwy8ok4/gjUTnNQAbCocVlyYF4NEQPlLdcneZ47+lq2os7oVs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748345643; c=relaxed/simple; bh=YTLYU9LWSJhsBRbF0nwekUco3urr9nhUJqZ1xPPWD6I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gUVoY+zbCfau2kBjSFnEWEIONUWYCUJa7FKH419TkFIH76MpzRLPIKMKZfOtr5qHlF+L4DLb6uvsvpxUSNSaaixe+1dzNfdNQL4AYhltyrVOeaZlj2pxSeTDSmC11CCNorbKAS3lykXpPZ2/eiHhRrbELxyAdsDBlEfTeE3QItA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=OPsvpfSD; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="OPsvpfSD" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9480DC4CEEB; Tue, 27 May 2025 11:34:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1748345643; bh=YTLYU9LWSJhsBRbF0nwekUco3urr9nhUJqZ1xPPWD6I=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=OPsvpfSDXqVNMHu6O72FeusLJj/fe/bJsamEvSE117gXDT+bqkiXRWfandboGlnnX OAEwVtmCXHq6aZL790iu1Ek31lvbZFvlzDM2DTgRyrbpEq9QzuDQv9jaTi2SVm6oZO GJXV/sCT/xPM+lInvjKiOZpjSFb0kwk1D3pn6HcdDJWejzsH+jmquukuhn7ksJkKnK /YmTRxe7fhajBK6EynaFK+imu0U3K/xkZd+1pWe1zxXxMI79KsAHUvfWxb4lF1KZRf XEYVD1A4wACGg2gQNI9t8pAeuXGGCc1efWUhX7leW/fCUBCHwaQTln2qTBdhrLfu8M Qiag53s0Be5LQ== From: Jeff Layton Date: Tue, 27 May 2025 07:33:40 -0400 Subject: [PATCH v10 9/9] ref_tracker: eliminate the ref_tracker_dir name field Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250527-reftrack-dbgfs-v10-9-dc55f7705691@kernel.org> References: <20250527-reftrack-dbgfs-v10-0-dc55f7705691@kernel.org> In-Reply-To: <20250527-reftrack-dbgfs-v10-0-dc55f7705691@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=7499; i=jlayton@kernel.org; h=from:subject:message-id; bh=YTLYU9LWSJhsBRbF0nwekUco3urr9nhUJqZ1xPPWD6I=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBoNaMX37lKKv9qM6qZoSFnMypTHz5HKkasSkcfe 6vmfAFXGX2JAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaDWjFwAKCRAADmhBGVaC FQBDEACwwKWpXOrarJH08FEBs3PI31pyaNaGC834qIenHT3CSwcg9OyQ/26xJZBHeMVaI3YOwB4 W5satPonKqkZi9rLGOHlMEnSYvxoHqSHFv16PZaLZztxu+Pt5iuvDxrnd8/oRMlhyjsYMR07Q+Q Jk9S2uZIflWaIkdtre0sAm/ImHVrYJSD4hoxKx5/vZMTfqo4BHDY5nUd8XaRt8e/oXkxjMAoUqC 40oUr6gTBFUF5GXMaJZxO3eTj2DhREdWB4fgJY7RdH5JemF1cJcBidBfgQhD0EQyGBX/adeD1+3 ZKYyIYUo/Ek8JCxjxXPol5puEC+TUlOZWkNefAB/eptzr+0p/W8p97cg13X9zb4B0PXTC2pcz3Q GVcpCV0qfYMSfbH7F1/3KPSKcFQIsmZsXgyPTOji2lDI9z7ASsSYRd1QDr9DeS3M8j6rcy2kGpy U7GfxOr8Fiwba1ekQsyCgHzopDbOrJ1HebmVLKG2FuYWUzp3h4XQy923o4N7xPNjqVBTrWkueAt tW7XiIOCI9AKto/byQI/cSqN25Z4aJ2zfZnEBv4m54vsjZYnGkwzn5pmEZoEHgknd/Z76g/zU8c 7cOLpEEZ6LTGRAF4bF7hb19+gAF3UPPtfWbljLPs7axNcNqp7uL3N3yVUGO8UcUHlvtDcvk2VNc SXR/qw3S6HRW3kA== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 Now that we have dentries and the ability to create meaningful symlinks to them, don't keep a name string in each tracker. Switch the output format to print "class@address", and drop the name field. Also, add a kerneldoc header for ref_tracker_dir_init(). Signed-off-by: Jeff Layton --- drivers/gpu/drm/display/drm_dp_tunnel.c | 2 +- drivers/gpu/drm/i915/intel_runtime_pm.c | 2 +- drivers/gpu/drm/i915/intel_wakeref.c | 2 +- include/linux/ref_tracker.h | 20 ++++++++++++++------ lib/ref_tracker.c | 6 +++--- lib/test_ref_tracker.c | 2 +- net/core/dev.c | 2 +- net/core/net_namespace.c | 4 ++-- 8 files changed, 24 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/display/drm_dp_tunnel.c b/drivers/gpu/drm/disp= lay/drm_dp_tunnel.c index b9c12b8bf2a3e400b6d8e9d184145834c603b9e1..1205a4432eb4142344fb6eed1cb= 5ba5b21ec6953 100644 --- a/drivers/gpu/drm/display/drm_dp_tunnel.c +++ b/drivers/gpu/drm/display/drm_dp_tunnel.c @@ -1920,7 +1920,7 @@ drm_dp_tunnel_mgr_create(struct drm_device *dev, int = max_group_count) } =20 #ifdef CONFIG_DRM_DISPLAY_DP_TUNNEL_STATE_DEBUG - ref_tracker_dir_init(&mgr->ref_tracker, 16, "drm_dptun", "dptun"); + ref_tracker_dir_init(&mgr->ref_tracker, 16, "drm_dptun"); #endif =20 for (i =3D 0; i < max_group_count; i++) { diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915= /intel_runtime_pm.c index 3fdab3b44c08cea16ac2f73aafc2bea2ffbb19e7..c12b5d0e16fa363f3caede372e7= a2031676aa7b5 100644 --- a/drivers/gpu/drm/i915/intel_runtime_pm.c +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c @@ -60,7 +60,7 @@ static struct drm_i915_private *rpm_to_i915(struct intel_= runtime_pm *rpm) static void init_intel_runtime_pm_wakeref(struct intel_runtime_pm *rpm) { ref_tracker_dir_init(&rpm->debug, INTEL_REFTRACK_DEAD_COUNT, - "intel_runtime_pm", dev_name(rpm->kdev)); + "intel_runtime_pm"); } =20 static intel_wakeref_t diff --git a/drivers/gpu/drm/i915/intel_wakeref.c b/drivers/gpu/drm/i915/in= tel_wakeref.c index 5269e64c58a49884f5d712557546272bfdeb8417..615fb77809291be34d94600fdd4= d919461a22720 100644 --- a/drivers/gpu/drm/i915/intel_wakeref.c +++ b/drivers/gpu/drm/i915/intel_wakeref.c @@ -114,7 +114,7 @@ void __intel_wakeref_init(struct intel_wakeref *wf, "wakeref.work", &key->work, 0); =20 #if IS_ENABLED(CONFIG_DRM_I915_DEBUG_WAKEREF) - ref_tracker_dir_init(&wf->debug, INTEL_REFTRACK_DEAD_COUNT, "intel_wakere= f", name); + ref_tracker_dir_init(&wf->debug, INTEL_REFTRACK_DEAD_COUNT, "intel_wakere= f"); #endif } =20 diff --git a/include/linux/ref_tracker.h b/include/linux/ref_tracker.h index ddc5a7b2bd84692bbc1e1ae67674ec2c6857e1ec..5878e7fce712930700054033ff5= f21547e75224f 100644 --- a/include/linux/ref_tracker.h +++ b/include/linux/ref_tracker.h @@ -24,7 +24,6 @@ struct ref_tracker_dir { struct dentry *dentry; struct dentry *symlink; #endif - char name[32]; #endif }; =20 @@ -48,10 +47,21 @@ void ref_tracker_dir_symlink(struct ref_tracker_dir *di= r, const char *fmt, ...) =20 #endif /* CONFIG_DEBUG_FS */ =20 +/** + * ref_tracker_dir_init - initialize a ref_tracker dir + * @dir: ref_tracker_dir to be initialized + * @quarantine_count: max number of entries to be tracked + * @class: pointer to static string that describes object type + * + * Initialize a ref_tracker_dir. If debugfs is configured, then a file + * will also be created for it under the top-level ref_tracker debugfs + * directory. + * + * Note that @class must point to a static string. + */ static inline void ref_tracker_dir_init(struct ref_tracker_dir *dir, unsigned int quarantine_count, - const char *class, - const char *name) + const char *class) { INIT_LIST_HEAD(&dir->list); INIT_LIST_HEAD(&dir->quarantine); @@ -65,7 +75,6 @@ static inline void ref_tracker_dir_init(struct ref_tracke= r_dir *dir, dir->dentry =3D NULL; dir->symlink =3D NULL; #endif - strscpy(dir->name, name, sizeof(dir->name)); ref_tracker_dir_debugfs(dir); stack_depot_init(); } @@ -90,8 +99,7 @@ int ref_tracker_free(struct ref_tracker_dir *dir, =20 static inline void ref_tracker_dir_init(struct ref_tracker_dir *dir, unsigned int quarantine_count, - const char *class, - const char *name) + const char *class) { } =20 diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c index 5e84e5fd78e147a036d4adb511e657da07866a55..5fb384dd919e1f1ad632eaf595b= 954118bcfddab 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -123,7 +123,7 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *di= r, stats =3D ref_tracker_get_stats(dir, display_limit); if (IS_ERR(stats)) { pr_ostream(s, "%s%s@%p: couldn't get stats, error %pe\n", - s->prefix, dir->name, dir, stats); + s->prefix, dir->class, dir, stats); return; } =20 @@ -134,14 +134,14 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *= dir, if (sbuf && !stack_depot_snprint(stack, sbuf, STACK_BUF_SIZE, 4)) sbuf[0] =3D 0; pr_ostream(s, "%s%s@%p has %d/%d users at\n%s\n", s->prefix, - dir->name, dir, stats->stacks[i].count, + dir->class, dir, stats->stacks[i].count, stats->total, sbuf); skipped -=3D stats->stacks[i].count; } =20 if (skipped) pr_ostream(s, "%s%s@%p skipped reports about %d/%d users.\n", - s->prefix, dir->name, dir, skipped, stats->total); + s->prefix, dir->class, dir, skipped, stats->total); =20 kfree(sbuf); =20 diff --git a/lib/test_ref_tracker.c b/lib/test_ref_tracker.c index d263502a4c1db248f64a66a468e96c8e4cffab25..b983ceb12afcb84ad60360a1e6f= ec0072e78ef79 100644 --- a/lib/test_ref_tracker.c +++ b/lib/test_ref_tracker.c @@ -64,7 +64,7 @@ static int __init test_ref_tracker_init(void) { int i; =20 - ref_tracker_dir_init(&ref_dir, 100, "selftest", "selftest"); + ref_tracker_dir_init(&ref_dir, 100, "selftest"); =20 timer_setup(&test_ref_tracker_timer, test_ref_tracker_timer_func, 0); mod_timer(&test_ref_tracker_timer, jiffies + 1); diff --git a/net/core/dev.c b/net/core/dev.c index bac9d29486556023cd99f5101b96b052acb9ba70..a062912525ee573504a9cc252f7= 1aed22693d24f 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -11713,7 +11713,7 @@ struct net_device *alloc_netdev_mqs(int sizeof_priv= , const char *name, =20 dev->priv_len =3D sizeof_priv; =20 - ref_tracker_dir_init(&dev->refcnt_tracker, 128, "netdev", name); + ref_tracker_dir_init(&dev->refcnt_tracker, 128, "netdev"); #ifdef CONFIG_PCPU_DEV_REFCNT dev->pcpu_refcnt =3D alloc_percpu(int); if (!dev->pcpu_refcnt) diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index 39b01af90d240df48827e5c3159c3e2253e0a44d..c03757e39c8a334d307fa1b5cc8= f03ad3a8df0e0 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -403,8 +403,8 @@ static __net_init void preinit_net(struct net *net, str= uct user_namespace *user_ { refcount_set(&net->passive, 1); refcount_set(&net->ns.count, 1); - ref_tracker_dir_init(&net->refcnt_tracker, 128, "net_refcnt", "net_refcnt= "); - ref_tracker_dir_init(&net->notrefcnt_tracker, 128, "net_notrefcnt", "net_= notrefcnt"); + ref_tracker_dir_init(&net->refcnt_tracker, 128, "net_refcnt"); + ref_tracker_dir_init(&net->notrefcnt_tracker, 128, "net_notrefcnt"); =20 get_random_bytes(&net->hash_mix, sizeof(u32)); net->dev_base_seq =3D 1; --=20 2.49.0