From patchwork Tue Apr 15 18:49:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14052560 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 989C4233738; Tue, 15 Apr 2025 18:50:21 +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=1744743021; cv=none; b=NwTfqcE0eKPH41R9it3twAPZmNsN231SBht8Ez4NxioCBw6suqe5hglmqVggkfCYVzXH60FNBDpZrAqiqw5fsdihe0ZRmf+wVGd7sJJ/KIenX//qKhEATcI3LtpLgVc9jAO4uAEJOigir4oIpMO8sozqs0EuU5as9cCg8N2XMg4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744743021; c=relaxed/simple; bh=20xUNOV/1f6OQhBvCvol1tdYpv6GVoR6PFFok+tmwQk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RotiYjgnfQinUOzpeSwJFE+/k9wogmNghs2yKO29r7ZFxEM7PM5VuZmmCLVkvZlQwZyYuzYKNZ+9Hs7GHWExIHEmLnNhzalVLcWTMWFaaUdRwyIQX3TYZid6G0iWEx3FPQYZWtDYTC39KcYcVhhx76/ylyNy3fofDXpEz0cry6o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=oX++q8Ri; 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="oX++q8Ri" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D3709C4CEEF; Tue, 15 Apr 2025 18:50:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744743021; bh=20xUNOV/1f6OQhBvCvol1tdYpv6GVoR6PFFok+tmwQk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=oX++q8Ri3hoHtUkjKnckJEwjxtTLDpLSKKGd5hZx56pf3sDPRhzkaroJkQ9pnB+/Q f0XbrsmGJprHZJyA0PR5I7YtMZPcnG+0FKMFwzFYIVpqtEHmRqainpaWz5J9S2dCm+ 5EbKDTVy5cQftQj3iFHBjC3UNeRTuKFRS3SQoOZn/yrWbrwIewglj0JmTN/S2BfLZ9 9w6BY1BV0ESjqG0CmHu91KrpAvvIKWXEXEjh+xoZb9fvm72+6tqNDrFuA/s1K1EyhK ANc19wSaf4fCt5EXPZ8OKFlWloQd2lVW1nIcKYCiMFtgLmIbu6FY/CK1ZMw6mC8056 39+EaGYVCLCBA== From: Jeff Layton Date: Tue, 15 Apr 2025 14:49:39 -0400 Subject: [PATCH v2 1/8] ref_tracker: don't use %pK in pr_ostream() output Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250415-reftrack-dbgfs-v2-1-b18c4abd122f@kernel.org> References: <20250415-reftrack-dbgfs-v2-0-b18c4abd122f@kernel.org> In-Reply-To: <20250415-reftrack-dbgfs-v2-0-b18c4abd122f@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.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=1766; i=jlayton@kernel.org; h=from:subject:message-id; bh=20xUNOV/1f6OQhBvCvol1tdYpv6GVoR6PFFok+tmwQk=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBn/qpo3GV0Y0O2aJiaOU5Zt7LC+YOSB76CFxCK0 5ZyAe9z6/KJAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCZ/6qaAAKCRAADmhBGVaC FR2fD/9ErPUaK0rwWSLjH2ZKkYNp7JT7h6pCiXgWzh6zhltZu6J7VRSEvQ0u1oHbx7B9zhHk+se WKhYSkMiLn8EnuAsIYPXjmUfofZ9Z8FntcBFWqrMQC0wSGXGAbqHDMD/A+CZaVY3Jo04f8JoyW9 xDt68felHKzGZjpVxc1MqIozZbMBytt9z12rg3yR1+iNYMsT9/erfekBc3n3ZNlgH6af2s9u20n x8ducRmnYAqJs51oCKFI9CIVpGFy8bRVGvH3Yq71KZoW3FIkvTDQQcexMfIm1YZ+o2vbOGgOfav ogQ5hZE2aSZ82z0eiJuRkmYkzelBhDNTF/cPJCerYcdCVe4DQn22D36tot7/UO8KdOJWbUC7kGq ABkNqtCa9tRwb62jnfH8gBsHIZLZZJvG+JBakB7a6Q41QT0UPtMpyOViaYIF/yyAOaaLckJeyMq 97iSXpuKThCQ6bQg2C8UPezwfyL4q4GF0h6xWfExCOnE8bbGe3vUdxrb/p3fclYXxq9YwSv0egY 1SAKWoDqaou881HEGGT7P5dEhDB0Zax6r/5Kfo1O/642ud1u5vJFSYULOnRgU59ZmvWnywCeGcb U+D4UKWfqQQIiSVSPEY/cIVTGDa5/0RSd+He7VSuUmZvWuoPQ0ljjNUHNMUqjd826A5Wfq5F4u1 PCAUh2CPzRc7VVQ== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 As Thomas Weißschuh 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-12af0ce46cdd@linutronix.de/ Cc: "Thomas Weißschuh" 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..de71439e12a3bab6456910986fa611dfbdd97980 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, stats = 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 = stats->stacks[i].stack_handle; if (sbuf && !stack_depot_snprint(stack, sbuf, STACK_BUF_SIZE, 4)) sbuf[0] = 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 -= stats->stacks[i].count; } 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); kfree(sbuf); From patchwork Tue Apr 15 18:49:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14052561 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 8AE0E23535B; Tue, 15 Apr 2025 18:50:22 +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=1744743022; cv=none; b=SpBphx64xNkNAsyPCZx36xX/aIG1wQ6qCazc3DvYHvMhz4Cy0MMLk3Vmp4WmssdITF6/CQgcSdv49+ItvBI3wSsQ1RL1/+RfouGkYo43wlWIhnzP1cIxR6Lf+yb/ifRrKf6RvsVIwn/ZCG2/SpvOQP9nPsdNNWSTzsdfwCWIOVA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744743022; c=relaxed/simple; bh=MA1ST7Czc/ip+INtw6W9MrUsjUJdfeZf5VeF8KgVYZs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dMgpzwkMUnINk9s9U8JWYxZy3XpLWWHpl0zKhqVlb9QMc5NsdoDeQ9wQUEP+EcjHwL1k+jh5ES1KPIPcO+p9W76U9DqTdtYHCKADBRSZbApRrpK059/2Lh9qRAidBR4bc6xUwOPSmNPVy5kXkuA1FGUJYJqbNY3ob7lNRXkCz1Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZOidF/Xe; 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="ZOidF/Xe" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 482B4C4AF0B; Tue, 15 Apr 2025 18:50:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744743022; bh=MA1ST7Czc/ip+INtw6W9MrUsjUJdfeZf5VeF8KgVYZs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ZOidF/Xe9PeYOJyXNA41pNGmo5Axt818oI7n06DAB7iHbAfyHuZ7HqysTrNE6pFJv DZX7UDBuRIJwoYA1dcp95dS+EhnohZ9QLx4KtcsQ2857bKYqPq3WQPiLegVf2Z2RpM Gsr3nAaE1eIe0l7fmkh8o1sN5Z5FXXUDQu+Y8lH6npkyp9UFKOXEkLIzT0+yuQdP+9 8EJDEM+Ur8ew9mroCVRffrbZOmxBXTS1pa7GJgJe5ocyZojCYIlHCnKKieKEYKMKEa SNXdFTMK3GAwFQ0zla9QThKO6Z4zEJ9zopn1a+k8/6x2GE/ZHKNHZLgdHrRxRkXQ/R gfIpmwRSWB7hg== From: Jeff Layton Date: Tue, 15 Apr 2025 14:49:40 -0400 Subject: [PATCH v2 2/8] ref_tracker: add a top level debugfs directory for ref_tracker Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250415-reftrack-dbgfs-v2-2-b18c4abd122f@kernel.org> References: <20250415-reftrack-dbgfs-v2-0-b18c4abd122f@kernel.org> In-Reply-To: <20250415-reftrack-dbgfs-v2-0-b18c4abd122f@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1344; i=jlayton@kernel.org; h=from:subject:message-id; bh=MA1ST7Czc/ip+INtw6W9MrUsjUJdfeZf5VeF8KgVYZs=; b=kA0DAAgBAA5oQRlWghUByyZiAGf+qmijpV0CAEYrKi85x/9Xgbjlj6jNdJG86QVE4IlVe5hDY IkCMwQAAQgAHRYhBEvA17JEcbKhhOr10wAOaEEZVoIVBQJn/qpoAAoJEAAOaEEZVoIVM5cP/iHm Pc9pt/oz/8sjlXG5z4iKg13sWl4DtkI+Oq4YTjbKzCFY7D3ihhvUwHrvVFgHKr6aO4PMWh1qf5W 4iGq9NEQwvk8p8p8Ff6RonkQg7Z2xNOHO98UOITknOo6fHasEoxy3ZOyo36BA9Oah07g4umoDbA gq5acV5rD5NtL+8zOaALpvo6tL6O0ONvzOXz5tvo5xm9FJprRwxLhpXCNNeWiv890NXJQqDa9L+ qu26PTUISWxv7tv+57xmt/xTw3ZOFw2+OjtCQwjER3MP3fthHv2eBsqM6a7ugNPaQtzkXibsGGZ ZBV3byzqkocQH0FuJ/Yp/uzIWBnQn4jNy+FkcqR16KBtR4is+enIFFTDt7ZY01En9rxQqVQxdKu VotO4wP5kupzN9k7lPrPxRToZbfZR9wEgW/iYGnIQRPVrkMU8+5iQ/9egsBNFdHio3OS0zrRHnY GhgGa0q5StzenKYcV6Sxn7nyitYc1vu6gxTt7HFj6oGxKEkH1QVUFyTbiF6lVS6XTOyX2gYTEqr zhQ8O98xcEDxvslbHlYx6h8OyIr/AMZbfmHvgslI6A0wxinxsL1xj39qnboQ95ppqDSkhrbm6Ki c4oW1WNoQco26Vxo6C5/CJWq/luKnMGAOXnle1f4cBeJHXt+vo8gwbVocCKKR/+aXNZd/cA4Jwb USiSr 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. 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..a66cde325920780cfe7529ea9d827d0ee943318d 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -12,6 +12,8 @@ #define REF_TRACKER_STACK_ENTRIES 16 #define STACK_BUF_SIZE 1024 +static struct dentry *ref_tracker_debug_dir = (struct dentry *)-ENOENT; + struct ref_tracker { struct list_head head; /* anchor into dir->list or dir->quarantine */ bool dead; @@ -273,3 +275,17 @@ int ref_tracker_free(struct ref_tracker_dir *dir, return 0; } EXPORT_SYMBOL_GPL(ref_tracker_free); + +#ifdef CONFIG_DEBUG_FS +#include + +static int __init ref_tracker_debugfs_init(void) +{ + ref_tracker_debug_dir = debugfs_create_dir("ref_tracker", NULL); + if (IS_ERR(ref_tracker_debug_dir)) + pr_warn("ref_tracker: unable to create debugfs ref_tracker directory: %pe\n", + ref_tracker_debug_dir); + return 0; +} +late_initcall(ref_tracker_debugfs_init); +#endif /* CONFIG_DEBUG_FS */ From patchwork Tue Apr 15 18:49:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14052562 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 46D51236A6B; Tue, 15 Apr 2025 18:50:23 +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=1744743024; cv=none; b=fhdXDAVS8wlzuYzHmVGsDlaBQOqlBAAHItppAX55dtnjOtcNta95cv/iIn5oR/7Xo/ELNOwcFX+1brfWHUtzMPFlBv059SBF70Z8Wlu+pLKzpXOExslnuJBz1N6o4k8wqlnBs1G8lVGZcB0QsqSTMSQ9moGkWV8ljTfU6eIinkA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744743024; c=relaxed/simple; bh=hJcBuOT2Wi8dUrGdHbQ64LKjsIpqJcmHANQQSzrErKQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jHJ1gKGbvwF4MtdbK654j4IWCK1xOWheIEVeC5dxQ+LlUMMfx6+PJJ6CZiz/kjrE+1SaWATfNjoNgd2Y0hThZfv936ZN87W/Mn3vxCgZHIl/yUDEoY9v7X8YzvJPN1nPG1uqq6e53BV/Q1L1NK3qaZCI2xyFr2C3RUEgYYPKDn4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=DrJSEu4S; 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="DrJSEu4S" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9D36AC4CEE9; Tue, 15 Apr 2025 18:50:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744743023; bh=hJcBuOT2Wi8dUrGdHbQ64LKjsIpqJcmHANQQSzrErKQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=DrJSEu4Suk92cOjkiHFZaWFC0vdz3EaU1Vuf+OpRPZCB9ZwFrH/8BYJEF1adD4xBm +dXwAk/waT6AHk+LmBV0pJvdPViG4Jj1ZrEExxpLJsEdEG1hhEqzmzCRE9yGOj08+C BI2bR4UxrSdKpfFw6BxT3/+Fpr/VzBui1u3ZGlVEW242DCfUTSlHZks5BHMFF4uU+z awfzQGG/IAhGbnqBft0mgUYXasymuLrd6zAxa0cJN+Zljha9FHAgBIFlKf/7oqGoPS P+hq/SHfxedaoA7gy+MUOeSfI7cYBrR8USVl3PvuWjd4Hc0RVq2ZoXNm5EpoQHh7tG PnLDi9n6kEfzg== From: Jeff Layton Date: Tue, 15 Apr 2025 14:49:41 -0400 Subject: [PATCH v2 3/8] ref_tracker: have callers pass output function to pr_ostream() Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250415-reftrack-dbgfs-v2-3-b18c4abd122f@kernel.org> References: <20250415-reftrack-dbgfs-v2-0-b18c4abd122f@kernel.org> In-Reply-To: <20250415-reftrack-dbgfs-v2-0-b18c4abd122f@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3802; i=jlayton@kernel.org; h=from:subject:message-id; bh=hJcBuOT2Wi8dUrGdHbQ64LKjsIpqJcmHANQQSzrErKQ=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBn/qppLr5POxEIzZM1ulisGL2CeHNL6Uh7JNYnn pXH0h9jqtOJAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCZ/6qaQAKCRAADmhBGVaC FcU+D/9uY5yFVPWODlskE08HiQ8RuQ1lnEQ/YOmdl9zHcoXdIdv83EwdWpC86Xus0pvsJI5Z8vh IpZmB/xqBMtITbM9TJ8rNznjBqS7L1TmzmdzOR2bCamVqHhXj7eyvRGpl7uYG27Iw0bDwgwrtrS xlOm9rdYbSibNblRt8kAl5Ag0cu7E2X6+TGcbAdykIzG019dch2gQcInPyjxElz8mg5oo7pkOe7 +FS4QMSGoQiFwRsR1fCjdiPKmAQODY4cyUbVzhPf7sd54KuqoI8uwbJER8ClRrtz+/thgcYo6wD Kg6oHapy8OJZtVopejS6YSlJ4dnOT8qHJDaHpEwGmKdf4hC20ucB/fBdjL8QcpTocIFkC8pcsyJ FGskmJyKyFS3cjPAiTP9hKnDAloyUbUUbQ7brAE2p9pMjpLRDkHbCn5JcETmRxW2ePTaOgvohmm BQbHMg9jKoLYIskNZo0F9UFdMpTu3e0mamDk/Xy+XaRyH/j/11i1y93X4nOLAU4SessYDo65t8V K63QCzKBOiqAWvbnjYKDIyM1uB6lO2Rz+j0MzLo/zyygCptfeTnywc+ADsUBJfQ2/5fyiCQ76Ft hM5fRvDTTAjPzKqGadPwIKUHkjpjJrhjIS8v3d265RMTeQ9ehi/qQmZo0qJ5mqOVLLgdQ7CWqO1 dBPVKjIMyTetYiw== 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. Signed-off-by: Jeff Layton --- lib/ref_tracker.c | 53 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c index a66cde325920780cfe7529ea9d827d0ee943318d..b6e0a87dd75eddef4d504419c0cf398ea65c19d8 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -64,22 +64,40 @@ ref_tracker_get_stats(struct ref_tracker_dir *dir, unsigned int limit) return stats; } +#define __ostream_printf __printf(2, 3) + struct ostream { + void __ostream_printf (*func)(struct ostream *stream, char *fmt, ...); + char *prefix; char *buf; int size, used; }; +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 = stream->size - stream->used; + va_list args; + + va_start(args, fmt); + ret = vsnprintf(stream->buf + stream->used, len, fmt, args); + va_end(args); + stream->used += min(ret, len); +} + #define pr_ostream(stream, fmt, args...) \ ({ \ struct ostream *_s = (stream); \ \ - if (!_s->buf) { \ - pr_err(fmt, ##args); \ - } else { \ - int ret, len = _s->size - _s->used; \ - ret = snprintf(_s->buf + _s->used, len, pr_fmt(fmt), ##args); \ - _s->used += min(ret, len); \ - } \ + _s->func(_s, fmt, ##args); \ }) static void @@ -98,8 +116,8 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *dir, stats = 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; } @@ -109,14 +127,15 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *dir, stack = stats->stacks[i].stack_handle; if (sbuf && !stack_depot_snprint(stack, sbuf, STACK_BUF_SIZE, 4)) sbuf[0] = 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 -= stats->stacks[i].count; } 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); kfree(sbuf); @@ -126,7 +145,8 @@ __ref_tracker_dir_pr_ostream(struct ref_tracker_dir *dir, void ref_tracker_dir_print_locked(struct ref_tracker_dir *dir, unsigned int display_limit) { - struct ostream os = {}; + struct ostream os = { .func = pr_ostream_log, + .prefix = "ref_tracker: " }; __ref_tracker_dir_pr_ostream(dir, display_limit, &os); } @@ -145,7 +165,10 @@ EXPORT_SYMBOL(ref_tracker_dir_print); int ref_tracker_dir_snprint(struct ref_tracker_dir *dir, char *buf, size_t size) { - struct ostream os = { .buf = buf, .size = size }; + struct ostream os = { .func = pr_ostream_buf, + .prefix = "ref_tracker: ", + .buf = buf, + .size = size }; unsigned long flags; spin_lock_irqsave(&dir->lock, flags); From patchwork Tue Apr 15 18:49:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14052563 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 9B763238144; Tue, 15 Apr 2025 18:50:25 +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=1744743025; cv=none; b=JtJ/bh8C4mXIa/zMgOHjH9nwSt8rYEuk4lf8q97+xaSnglrAJ21HPqZctr5MVDN7m98drjjKJmxadajPKBZJQ+M8yNzmW1/xwojQw4Yg9K4yDc1p7TBWjLtsEXl8sM7U9i1/I1leKtIF3RTGTXJpjQTtkUiLxz1IHHBu8rpuKnQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744743025; c=relaxed/simple; bh=yAtQC+T/kvIyaWVd4i2QUou/vgOvw6JReC/jdUjP8LA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Tp+n1P3VG+LZUtMx94thdOUlUKl9UB0/ECbW0DFsTWABO0LMtnOY5R1C1Riug9IPaBfdIhQz73yA1oOxd9wVnC0twiMen8sQF11r5WC0L7XYCW3yY9kwglz6MSIsU6clko4xvPCNT4NTtJab4oNs+bB0wUemUdjdGps++fibMdI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=W5+7RFoU; 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="W5+7RFoU" Received: by smtp.kernel.org (Postfix) with ESMTPSA id F2E82C4AF0B; Tue, 15 Apr 2025 18:50:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744743025; bh=yAtQC+T/kvIyaWVd4i2QUou/vgOvw6JReC/jdUjP8LA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=W5+7RFoUS6hl2bpH5/ztZFjxl/6Ds8uW520Nyhzd2d30ZwdIbPSG6ZA1B2Wbbh37B MYkYVJ7Buxs+y5JgsptS4TNHRi/T9jyn8ASadMGu9Jk7vtzRdQcccmy2IWnK88R2AU JRIXoFF/N4JwRe5KC6+0VRCCKzeJgkvRBNpejkRN9ET8wsKchrJBPygeqx9fqAdhiX VKKT9E3YuZ8ctJfQhXQKZkFu4OHfdJs8+DDvMPduTY6auikcKHURIuQxbBlB/TP16P OOpZbXK8fyNEbEXjEcgxWW7yL/eP4Dd8TPLGeTvFH0gdV5tMc3P79zgdjXtaN5/GjD 73y9IOSiNhhlg== From: Jeff Layton Date: Tue, 15 Apr 2025 14:49:42 -0400 Subject: [PATCH v2 4/8] ref_tracker: allow pr_ostream() to print directly to a seq_file Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250415-reftrack-dbgfs-v2-4-b18c4abd122f@kernel.org> References: <20250415-reftrack-dbgfs-v2-0-b18c4abd122f@kernel.org> In-Reply-To: <20250415-reftrack-dbgfs-v2-0-b18c4abd122f@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1899; i=jlayton@kernel.org; h=from:subject:message-id; bh=yAtQC+T/kvIyaWVd4i2QUou/vgOvw6JReC/jdUjP8LA=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBn/qppqbzqQnotbk6ZG/YJ56GMWjDeobk0RsJ1f oMs2PYiBQSJAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCZ/6qaQAKCRAADmhBGVaC FQz4D/0WlD5+uOnNzq0BfiPoe5tT/A5Z2ojN9aiU/LWeK51HtklSUetMWZ/66NCqj7mm8wMWLtT NlRRwP5ululHGf7akgbhChbAon4vKUYF3d4wL92b04XkM/wqFMa1bXSEG51FNGkGkoM5lgzDv6j kExKhBCMG3SN/cp4XZButqPtnY2pOtheSCIBe40GVTpu3/5i3IS95S8FcSp1n3yAcJKceVyXvVe Olk2/cqnsd5tpypxLKWzhFf9SZNno3fXP8QcqKceEX6r/lcFl4YQLWDo5vYEPWuAh6T6RvDL2Dl Gze4U0Cqi8lw/O26obcn3UrUR/UO3TeQBChhpCBBMZErZSraEIjI7svWM+xl7MW/no/COjBvDDW AyvmFJFefXWghcXQEtYvP7KTgDRadfB7tL40gcSX+pMvku0T3fEq+AvaP+uGElWKahE1VkwDdIh 2dEnqSAdyrTs6/nerZhoT+3uJWfSYWxLFn3G2NPHvvnauRZ5Lw3/niiEB8ZWoY6gaBhdweEFgld W/apouR7xpijaODq7F8eVVXOG/rj17gzKSIBE2+fh7U/yO5a8w3OXXRX9nZcTeMDf5n1HUk5VnJ Z7c7OlLqXezVKro3b2VuqZ8iA4VLD42cXCe6VGvVcITEBE1Inex+bnY0ZC16D93c/sjRO3q+lVJ 4i9Qo2Qahb0WRZQ== 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. Signed-off-by: Jeff Layton --- lib/ref_tracker.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/lib/ref_tracker.c b/lib/ref_tracker.c index b6e0a87dd75eddef4d504419c0cf398ea65c19d8..4857bcb6d4bf557a0089f51328e75e8209e959e6 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -8,6 +8,7 @@ #include #include #include +#include #define REF_TRACKER_STACK_ENTRIES 16 #define STACK_BUF_SIZE 1024 @@ -70,6 +71,7 @@ struct ostream { void __ostream_printf (*func)(struct ostream *stream, char *fmt, ...); char *prefix; char *buf; + struct seq_file *seq; int size, used; }; @@ -93,6 +95,15 @@ static void __ostream_printf pr_ostream_buf(struct ostream *stream, char *fmt, . stream->used += min(ret, len); } +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); +} + #define pr_ostream(stream, fmt, args...) \ ({ \ struct ostream *_s = (stream); \ @@ -302,6 +313,20 @@ EXPORT_SYMBOL_GPL(ref_tracker_free); #ifdef CONFIG_DEBUG_FS #include +static int ref_tracker_dir_seq_print(struct ref_tracker_dir *dir, struct seq_file *seq) +{ + struct ostream os = { .func = pr_ostream_seq, + .prefix = "", + .seq = 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 = debugfs_create_dir("ref_tracker", NULL); From patchwork Tue Apr 15 18:49:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14052564 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 E1535238178; Tue, 15 Apr 2025 18:50:26 +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=1744743027; cv=none; b=LSTpIhb3TnrqViGuOOjrGDSpPj0i0ITc+VuPyOfMHO/I2asNVg9GOC1W7C5JOCUtguSvinzOSMsjUwoUyAm30dM5hasYvflYXXtn/vZnYipgAtDu0UKEQ697s6wmRIObg0IRlx2zYxvy2uebRim/fh3ElQEhIIx38TRbZ8419gI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744743027; c=relaxed/simple; bh=TpRqbPL6NAJfjpOsN7HGdRXU52acB9kP7nuR9u71qVU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lJmg3xZzZa32liVox18KRrAduLRd/tfIRL4PxkKRtU5U7k8nTxWrFOAh1VJ8vSQ9ZHvNjobqCdWAUO+c8UFcdI9FvFusLnGYD/Ep5lCLv+VuTD5vnS1PoOMlZUVzKW1i2t5sPLIUbKuoAbZWAPsmMK7tetMK01TofGOYVZrI3lk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UDVFPBsz; 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="UDVFPBsz" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 53240C4CEE9; Tue, 15 Apr 2025 18:50:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744743026; bh=TpRqbPL6NAJfjpOsN7HGdRXU52acB9kP7nuR9u71qVU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=UDVFPBszllzzv8APHAkVF+aItQP6kTrhFhOzlIXVw3TKP+Vmk4RAbe4AVXmf5SEbL ATgSRTwfsn83GFoV/n7SD5V8UnVom94vw9XgOcPPSn6CNpkb4oeJ8aTFmiXd3R/yVI pJwdMbjm2aE1QV3yZxUy4NkK2AubQgnIiRycK/u5opuNk3bqgQODW+qSs61UKEg/kH pdKFoK+t/a6X1k6C62ROnv3UnvHn6s45EI+BVziiZ2gcWgpPYGCLMC7NZ8vPJJlun/ t8xnnUdobGXeGX0w+DMACqYJ1qbxRdy4wnbAy2dPg3JKpuM4fvY1uHTlXqZRj4lZky Lnsi8GYrMhl+g== From: Jeff Layton Date: Tue, 15 Apr 2025 14:49:43 -0400 Subject: [PATCH v2 5/8] ref_tracker: add ability to register a file in debugfs for a ref_tracker_dir Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250415-reftrack-dbgfs-v2-5-b18c4abd122f@kernel.org> References: <20250415-reftrack-dbgfs-v2-0-b18c4abd122f@kernel.org> In-Reply-To: <20250415-reftrack-dbgfs-v2-0-b18c4abd122f@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4781; i=jlayton@kernel.org; h=from:subject:message-id; bh=TpRqbPL6NAJfjpOsN7HGdRXU52acB9kP7nuR9u71qVU=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBn/qppT7LqNwrKjEjKimw+ZIgbFcBzs/fdT97/H pgbn9622SCJAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCZ/6qaQAKCRAADmhBGVaC FfFCEACBgDJZL23l2dsACNxJeTUzXEw6WkPfMlyfawToLDEFKBmei7K7qQIj3SVLPZgwlYQl1QR ru+qmUsV5Uc5Tbv4oHeQBWloFgeMHqxTl/9YpLra8wumyKIWLvmFBPjOTR1Ip0Q23QiciqmXQl1 63RiexjB+UziBp/k1/ZbgnEW+IxvkBoC9qZ1IZEIDk1+ddU9QzoDphzyuFR/OLkRkk5oBJUqMfY tOkGUFTUSZq7uB0a5NzZ7WmFgr4z156kh9pBLs363lYOYndQnTfiB1A3w3iyF85VStsZeDGzDOv SsvMgD70YoDp6tvBOnq2oM7/4/XbkOM55UDP/U9H6/JPpLfgGd3MSWgB2lsQcPg7LhuNJGnM1N9 Chhnbz7bHeiQIx1FYC30KtOf8uEPKlxvFGYqvl0zcFn7pOwhzI7C+vmAwtfS14aQS/bYDKgwSkJ Pkr3F2qEwYKRnEBcpHYRH+koc5UYFPqV9Ql+5yn3JRbGhTDS6zciuhaaVHRIrGWTiTArFSxWwAj X5Q6uoI/eWcVNNf1ok0FPeO/NnAQXxw1BRoW9Y3lieWNImoUvO4fp9XL4kqkwMSDpLhkfZlnSnp QWpPdfZS4/IEzBbXNd8s40ARdmZ44vMlCOEcKkFHqqObLIP6fL+RsFFs8TXvS1n4hOS4GSafS6Q qCbwA14ZJp6Jjkg== 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. Add a new function that other subsystems can optionally call to update the name field in the ref_tracker_dir and register a corresponding seq_file for it in the top-level ref_tracker directory. Signed-off-by: Jeff Layton --- include/linux/ref_tracker.h | 13 ++++++++++ lib/ref_tracker.c | 59 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/include/linux/ref_tracker.h b/include/linux/ref_tracker.h index 8eac4f3d52547ccbaf9dcd09962ce80d26fbdff8..77a55a32c067216fa02ba349498f53bd289aee0c 100644 --- a/include/linux/ref_tracker.h +++ b/include/linux/ref_tracker.h @@ -5,6 +5,7 @@ #include #include #include +#include struct ref_tracker; @@ -17,6 +18,9 @@ struct ref_tracker_dir { bool dead; struct list_head list; /* List of active trackers */ struct list_head quarantine; /* List of dead trackers */ +#ifdef CONFIG_DEBUG_FS + struct dentry *dentry; +#endif char name[32]; #endif }; @@ -34,10 +38,15 @@ static inline void ref_tracker_dir_init(struct ref_tracker_dir *dir, dir->dead = false; refcount_set(&dir->untracked, 1); refcount_set(&dir->no_tracker, 1); +#ifdef CONFIG_DEBUG_FS + dir->dentry = NULL; +#endif strscpy(dir->name, name, sizeof(dir->name)); stack_depot_init(); } +void ref_tracker_dir_debugfs(struct ref_tracker_dir *dir, const char *name); + void ref_tracker_dir_exit(struct ref_tracker_dir *dir); void ref_tracker_dir_print_locked(struct ref_tracker_dir *dir, @@ -62,6 +71,10 @@ static inline void ref_tracker_dir_init(struct ref_tracker_dir *dir, { } +static inline void ref_tracker_dir_debugfs(struct ref_tracker_dir *dir, const char *name) +{ +} + 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 4857bcb6d4bf557a0089f51328e75e8209e959e6..f47ff67f24ef4b84bd9ce8d027559509e3e5fcfa 100644 --- a/lib/ref_tracker.c +++ b/lib/ref_tracker.c @@ -31,6 +31,14 @@ struct ref_tracker_dir_stats { } stacks[]; }; +#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) { @@ -197,6 +205,7 @@ void ref_tracker_dir_exit(struct ref_tracker_dir *dir) bool leak = false; dir->dead = 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); @@ -327,6 +336,56 @@ static int ref_tracker_dir_seq_print(struct ref_tracker_dir *dir, struct seq_fil return os.used; } +static int ref_tracker_debugfs_show(struct seq_file *f, void *v) +{ + struct ref_tracker_dir *dir = 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 = inode->i_private; + + return single_open(filp, ref_tracker_debugfs_show, dir); +} + +static const struct file_operations ref_tracker_debugfs_fops = { + .owner = THIS_MODULE, + .open = ref_tracker_debugfs_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +/** + * ref_tracker_dir_debugfs - create debugfs file for ref_tracker_dir + * @dir: ref_tracker_dir to finalize + * @name: updated name of the ref_tracker_dir + * + * In some cases, the name given to a ref_tracker_dir is based on incomplete information, + * and may not be unique. Call this to finalize the name of @dir, and create a debugfs + * file for it. If the name is not unique, a warning will be emitted but it is not fatal + * to the tracker. + */ +void ref_tracker_dir_debugfs(struct ref_tracker_dir *dir, const char *name) +{ + strscpy(dir->name, name, sizeof(dir->name)); + + dir->dentry = debugfs_create_file(dir->name, S_IFREG | 0400, + ref_tracker_debug_dir, dir, + &ref_tracker_debugfs_fops); + if (IS_ERR(dir->dentry)) + pr_warn("ref_tracker: unable to create debugfs file for %s: %pe\n", + dir->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 = debugfs_create_dir("ref_tracker", NULL); From patchwork Tue Apr 15 18:49:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14052565 X-Patchwork-Delegate: kuba@kernel.org 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 752DC238D45; Tue, 15 Apr 2025 18:50:27 +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=1744743028; cv=none; b=h/0atHOuGjagDbzEjqkChqaRJhIQ04/1VDNggvye9m0bFRKOGx9pF1W3e4krpxP1bxz1GspotDtFaJQNLbg/CZMMjuaHGHjlgFLhfHDjXzeVpEC5gwDGXk9SKHPlcWfrG5mzOj3JLo2oiQkY/be2BK7CNwVaV7eQk8wMFIdiMbU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744743028; c=relaxed/simple; bh=i96Kyrg01izSj1tfm721taG9uBhVOrp8C74DnVe2tRA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cRn2Ttnu+k7FmUQwZGys8AiEnD0qXGDpovp5VZhpyd33xhakwgNQiXvtnW2vBhs9+/XCkPssm8ww5Pek4/ojQFWNRYtRWHzsfLpnjH1ziXIsQa5m9yACHyj8OwGqVvqeU2dWGbwt97lXz2nNWD+4CG15fcZjLJbOVDac40iIx2s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=MCrQSAEK; 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="MCrQSAEK" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A6B53C4CEF0; Tue, 15 Apr 2025 18:50:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744743027; bh=i96Kyrg01izSj1tfm721taG9uBhVOrp8C74DnVe2tRA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=MCrQSAEKMtZ4BFC4CzgKRH3Kiv2Y0+KgoKyYvzwHdKcrSED0OTtY48wdLQygmdo5D tMxBl933QsVBSutVfivfwp05hujsmARFi22dPQaxjTXmWl7t/odlOW8qV/cFo35sEN mGf27JpGo4+msI2oOGAyGMxnzgaGUYAskNnmmva0zFUoQMVo+gIG264vG34jqvi3XY M4f7jKwbZWHW8gkoqrKuB2s70t94x7VhdanoU7t5EWYbAODRdUOALSCt6AZe4fFNBi UW3fmN57MmQDXDivIlnymPWpCUVkzzEb2MR5EL1SMp3y9rUeAr01079l3B/qzDGxlS kHUDMDDSTkUJw== From: Jeff Layton Date: Tue, 15 Apr 2025 14:49:44 -0400 Subject: [PATCH v2 6/8] net: add ref_tracker_dir_debugfs() calls for netns refcount tracking Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250415-reftrack-dbgfs-v2-6-b18c4abd122f@kernel.org> References: <20250415-reftrack-dbgfs-v2-0-b18c4abd122f@kernel.org> In-Reply-To: <20250415-reftrack-dbgfs-v2-0-b18c4abd122f@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1833; i=jlayton@kernel.org; h=from:subject:message-id; bh=i96Kyrg01izSj1tfm721taG9uBhVOrp8C74DnVe2tRA=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBn/qppbntLmbDxuB2097U+Q5euUqeIkoi/TdyB5 FfsC4m6goOJAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCZ/6qaQAKCRAADmhBGVaC FSd9D/9CVyT8Q/Fp/vhtuyXenjQmxmD4fXzq1DXoOlSgFIlUgKQ2ibZzWyRwusZB2X/hC1p3p8s 7OSSeEUPl8CCZwMXygiS0MLDphCj7dIPEMKF0Wjl93L1CNMzPYfv8nz73TM9TLdlfE72/qW0KD8 xWBob+t6r5MqE9JtqQOdJo5Fa6EAvxTfJ4ist22yAFVR9nNqr53KkyadY25dTDWc5SzNaa6dQa9 ul53LeBkaoi2Gn6zwNQfAaT6mOn6TdRrKiCaMFoK6pEPWW/m9LSa6G5KqtHAowH6rCr2y1e8J4m J5NLU5JD8TUn3o+l0vQQev79InxG1Y+Kdm4Lcsz3QXUmhh3lfnLxhoKDg+6NSpdqj3iqjUhw/eK D1K/LmIKP3aOanKhBYTj8+dLn3MQY0QI0EMFTsEkVF3P6HSy7kytigxf7pFNtiH3l0YtUTmA4N5 DqGIWT+M7kwI+VADcLaYXtvJFK3PgpdpyW521TW01Kr2scqwl0A0phtS9OhtJgAFhh6YVEanduQ WWitmNVI0EAqlVtP4Z69yhwfvW9l3oeFedI8Y6DzwFYosw152TIaCUFZQJbd0ZMzRqvuNaHH5OZ gj6zll4egL01sD74Jfb601ZbZybD8dCLWPORLngFsKG00bze8AwdrwswkWPSQkrBGU5u1qxwB3N c6pUbgN4MfL5OAA== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 X-Patchwork-Delegate: kuba@kernel.org After assigning the inode number to the namespace, use it to create a unique name for each netns refcount tracker and register the debugfs files for them. The init_net is registered early in the boot process before the ref_tracker dir is created, so add a late_initcall() to register its files. Signed-off-by: Jeff Layton Reviewed-by: Kuniyuki Iwashima --- net/core/net_namespace.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index 4303f2a4926243e2c0ff0c0387383cd8e0658019..f636eb9b8eba28114fd192d64bcd359a25381988 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -761,12 +761,44 @@ struct net *get_net_ns_by_pid(pid_t pid) } EXPORT_SYMBOL_GPL(get_net_ns_by_pid); +#ifdef CONFIG_NET_NS_REFCNT_TRACKER +static void net_ns_net_debugfs(struct net *net) +{ + char name[32]; + size_t len; + + len = snprintf(name, sizeof(name), "netns-%u-refcnt", net->ns.inum); + if (len < sizeof(name)) + ref_tracker_dir_debugfs(&net->refcnt_tracker, name); + + len = snprintf(name, sizeof(name), "netns-%u-notrefcnt", net->ns.inum); + if (len < sizeof(name)) + ref_tracker_dir_debugfs(&net->notrefcnt_tracker, name); +} + +static int __init init_net_debugfs(void) +{ + 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 = &netns_operations; #endif - return ns_alloc_inum(&net->ns); + ret = ns_alloc_inum(&net->ns); + if (!ret) + net_ns_net_debugfs(net); + return ret; } static __net_exit void net_ns_net_exit(struct net *net) From patchwork Tue Apr 15 18:49:45 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14052566 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 3E97623957F; Tue, 15 Apr 2025 18:50:29 +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=1744743029; cv=none; b=eSf79OjLlWcuAO6Irob0rhPz4Gopo7wnRoHNCBBruE5RG2WoRrLCTmfd1pruFYVYsCQblqzE+BT0EsYdJqc93wjii79v4ceiWVcj5Qoeb6RAUelSW4byrp6ZhXq7XOmNY1IrRy86aIuCAAXDHEb3JbcBitEwsDSeeTYUP2uG5xI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744743029; c=relaxed/simple; bh=GUxWClb2p560YPhhqW30ElRrwqIgB8V99LnyxuA4BEU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qusGegePVwa3SJjgACe73p5WCIOztZ750c5Lo8+PPvtsdxtHGOszOEESU2paoJo7EEr7HbAvIi0rcwDlxvJtW8bk57R5RIORi2v03YyfJF2KuVUAJU3vMLvqwq9h+I478tPIND1ajFQMQW7raGJH6Q2BlWo9QRoPLZNTbwbyl6g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=EI65kYFD; 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="EI65kYFD" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 076CCC4CEEB; Tue, 15 Apr 2025 18:50:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744743029; bh=GUxWClb2p560YPhhqW30ElRrwqIgB8V99LnyxuA4BEU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=EI65kYFDUb7skoZvuo3+NCVhsAKSvtLTrK1kGqkmBXmldGubpMjyHMQdz+U3u1Hs5 tnEKJ9ZpEYTh/XaBv8eV9BzQWo6AA8YHCP9STW2rJS9vmf8J8fRR6dhNdq9QQdvPJv K7Ig77oCP4L38BsHZ4gHLi+6YuSUZXQHiAKvWXlt2tADYOhO+N65N//MTIEF4WLGQH XZ4ar16UOp94VNd1m2FjCeXHSCytCPg6nSWO3Gy//DXDA0UfnU0M2fXvpnyo91drRL OtS2SefIZdBJuJL2p500ObCacHRJen/tMTS+dX/3v4gHIg9mFrgpFtJ8eIvpQ0qic+ bf7Qt6JXq30ww== From: Jeff Layton Date: Tue, 15 Apr 2025 14:49:45 -0400 Subject: [PATCH v2 7/8] ref_tracker: widen the ref_tracker_dir.name field Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250415-reftrack-dbgfs-v2-7-b18c4abd122f@kernel.org> References: <20250415-reftrack-dbgfs-v2-0-b18c4abd122f@kernel.org> In-Reply-To: <20250415-reftrack-dbgfs-v2-0-b18c4abd122f@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=696; i=jlayton@kernel.org; h=from:subject:message-id; bh=GUxWClb2p560YPhhqW30ElRrwqIgB8V99LnyxuA4BEU=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBn/qppXPDCs9+jWOKGKY9T6cY2KifjDeb9uiA0M Y93TKREGS+JAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCZ/6qaQAKCRAADmhBGVaC FV4RD/95RrzXlJECwkM8G6ZYl+uwki7wa0ugi/6t+MtEACoCnHy4ceXvya9zbVFkmwR5EyfmMss ArRr1eo3GWhlIuz5KBNwbeJsyzl8ss+kGYXQCqKS3ESWSfUTpLLH03qL/fx8R3UcGASRsGviHDt TkR3Cw6DIozKK2zf9zNeMazmtlRpnRTJk83IgdKtLsjKabiDRPo/QA+PRjDPX88zN42/G1QU1Co V/aUvbEN5iidFu3BJveD7g8YN3VqQjb7sQfsTdNJj+uOpJjJoOT6bYrjTPzK0tUjMK9CTaokhL4 0bg6N3O1ZE2eswL/MjBsSWFS9njYxM3Cit5jt6RhFswd46ZKFT3ccCm6PbOGziKbznhPsc8fx1M wWdYonxL1HP5mKUWXWLXdtRKa3R5vTVEaCTKfj/4do3/ArP88RDA/tKsMwwjU73iPl+4VPjmfT0 eLYiFlDDhWRX35TzQ99PqOe9YSQTji5U7y2f4c6sEpV2Fmk94SkMYfiX9l0PgM2NpEbpAvXhAKz iNnNGoISTgMRGWdZWMrtVvPiuwB25dotUfe9go6hyFPKhnRNe9Lf5YgouyJrWtLCkSG20qOVi9E EuJR2Jv2+40IblBh7uiabJr2g+ALFnHqzjkmqo8EOxYn3du8rRaWF7LrhFA09MP7/7wUVJpTORx Qvu5neeCPwMGzXQ== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 Currently it's 32 bytes, but with the need to move to unique names for debugfs files, that's inadequate. Move to a 64 byte name field. Signed-off-by: Jeff Layton --- include/linux/ref_tracker.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/linux/ref_tracker.h b/include/linux/ref_tracker.h index 77a55a32c067216fa02ba349498f53bd289aee0c..be3e43127843f710c22aadb47612e07ce9eeeacd 100644 --- a/include/linux/ref_tracker.h +++ b/include/linux/ref_tracker.h @@ -21,7 +21,7 @@ struct ref_tracker_dir { #ifdef CONFIG_DEBUG_FS struct dentry *dentry; #endif - char name[32]; + char name[64]; #endif }; From patchwork Tue Apr 15 18:49:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14052567 X-Patchwork-Delegate: kuba@kernel.org 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 EF1A923BCF0; Tue, 15 Apr 2025 18:50:30 +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=1744743031; cv=none; b=X97na6DmOdJPpYT9WQ6lIS9dmhsdi5aORt0nBCambz1tlRWG1v33GNKqv9TvmedtkCo6kQwh8tt/EnCcv7NkOlt8Od531Edv2kURqPF0yt4E3CMsZ9M+WLh9NBAmQpHT2TKUsn4S/2wDgLOMpOChvGKEAY9wTFGjYiTvwaR9Cps= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744743031; c=relaxed/simple; bh=eNo92cBQpj7b/wXPctGVOxEdwuf4gwvq9WIYh0h6UHs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BfVuR8CbnX/akL85M0akFecutZRf7G/+9B1KnEg1VZjaGyFxYTCd7+Kbn/XvsP4D3pGjB86aHxXHOCe+hBuoMKfNMwuIQySAB/AwSe47m4DZjCnUyYZmssT8T78funSslxsCi3Ah/VZagQI1NgYejh0/nHDm0M0OkxAKExxO0eQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=HyerSjS/; 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="HyerSjS/" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5A10DC4CEEE; Tue, 15 Apr 2025 18:50:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1744743030; bh=eNo92cBQpj7b/wXPctGVOxEdwuf4gwvq9WIYh0h6UHs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=HyerSjS/6aAzezlSc3gBYhuL9hhRNx+FnY2OoaHiDkzH/NptBv0fP/pH6/TwqsGeQ yB2qHTMwaa0g9Xmv8G5igRi7z6ZkRhrEqFk086NqCkZZcShvtsTzaA+Kho8foeN7+h 3de0hQnFUsnVhEBj7GxT1v0UXnSb5aFIzaUg78Z85ePUdgd4nNacO6zHm5dFPqXNMw krq/BFEH0tJNL17pvCPD3R1O1yqbV8e4KL/uChHZ6ejZPf1pwvqaKsQ4bqnC6sSumi wM5PHUpeuRjfz/8Vax1fNEUYjRH7HrcRKAH8tmH9MAl9OBiiJwnLO8N85CAWVbiMUT 1BCS1+5l961ng== From: Jeff Layton Date: Tue, 15 Apr 2025 14:49:46 -0400 Subject: [PATCH v2 8/8] net: register debugfs file for net_device refcnt tracker Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250415-reftrack-dbgfs-v2-8-b18c4abd122f@kernel.org> References: <20250415-reftrack-dbgfs-v2-0-b18c4abd122f@kernel.org> In-Reply-To: <20250415-reftrack-dbgfs-v2-0-b18c4abd122f@kernel.org> To: Andrew Morton , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Kuniyuki Iwashima , Qasim Ijaz , Nathan Chancellor , Andrew Lunn , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1201; i=jlayton@kernel.org; h=from:subject:message-id; bh=eNo92cBQpj7b/wXPctGVOxEdwuf4gwvq9WIYh0h6UHs=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBn/qpql9dLvQ2791q+lprZuHaoBkdii84MRD0N7 TXJFPiTyOqJAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCZ/6qagAKCRAADmhBGVaC FTdRD/93ofcBTtdawaS7TUKN3LMF6FihrTC8SETLsjf68JDuyvJlL16MlPl8FGFLNkfpK3R2JkL qk6ojNXvy2MfT07DgXTIk18F0FswUA1gDSgltYY54OZVOMxJcdWlOQIs2KpRQHXDl4gmyiithfs Uk3VBd4VcHl5R69yCuryWJE8NtIwvZilxTFMaxy2iHL5xNlUgWl+WleqZP+qMtRGDXzP5nr9pLM zIOXSPP9pEHiqqtMAKeOwucYpB15kQvF8IkIJqg+WgdvLyJpSJsgMdT49FluxXO6zJ2iC20VugC x1v+aSPWXD3ubL/xeXuNACFjmxRYBPK9W0C5yeWBa/tN37M4gGeMxEu3gQiIE/CKEfZnjDjB+r8 E/PUXK2dI4T7BpGKI0M58dCLwrEErzCK6Gf/siUOHOpP3CZb7Etjk6Eg7yKU/VSYdv6PF5xKXDg SjukSDmHi95S1cbjeFryGHYrhP0PvxX8MqcPoQmxysUPEm+cssBNCzUKAI2LUYnLBV8081Ppd4V slJOrApdUanx24WyYL3aMuWTb6CLCalq6frzl/FIdOJpR/9P2v1jVqxtwa+dcwe6CuQvV7mB863 DAMRH5xUQDJz3XvmIflSMVfPz2C4rMoE0nxCi3VN3mcYmTaezvXqXQM1y4pdwu0IV9RAOAR8ZXt TInjHXSNE0tNbgw== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 X-Patchwork-Delegate: kuba@kernel.org As a nearly-final step in register_netdevice(), finalize the name in the refcount tracker, and register a debugfs file for it. Signed-off-by: Jeff Layton --- net/core/dev.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/net/core/dev.c b/net/core/dev.c index 2f7f5fd9ffec7c0fc219eb6ba57d57a55134186e..a87488e127ed13fded156023de676851826a1a8f 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -10834,8 +10834,9 @@ static void netdev_free_phy_link_topology(struct net_device *dev) */ int register_netdevice(struct net_device *dev) { - int ret; struct net *net = dev_net(dev); + char name[64]; + int ret; BUILD_BUG_ON(sizeof(netdev_features_t) * BITS_PER_BYTE < NETDEV_FEATURE_COUNT); @@ -10994,6 +10995,9 @@ int register_netdevice(struct net_device *dev) dev->rtnl_link_state == RTNL_LINK_INITIALIZED) rtmsg_ifinfo(RTM_NEWLINK, dev, ~0U, GFP_KERNEL, 0, NULL); + /* Register debugfs file for the refcount tracker */ + if (snprintf(name, sizeof(name), "netdev-%s@%p", dev->name, dev) < sizeof(name)) + ref_tracker_dir_debugfs(&dev->refcnt_tracker, name); out: return ret;