From: Julian Braha <julianbraha@gmail.com>
To: akpm@linux-foundation.org, ljs@kernel.org
Cc: arnd@arndb.de, gregkh@linuxfoundation.org, masahiroy@kernel.org,
nathan@kernel.org, nsc@kernel.org, ojeda@kernel.org,
corbet@lwn.net, linux-kernel@vger.kernel.org,
rust-for-linux@vger.kernel.org, linux-doc@vger.kernel.org,
linux-kbuild@vger.kernel.org,
Julian Braha <julianbraha@gmail.com>
Subject: [RFC PATCH 0/2] scripts: add kconfirm
Date: Mon, 27 Apr 2026 18:44:27 +0100 [thread overview]
Message-ID: <20260427174429.779474-1-julianbraha@gmail.com> (raw)
Hi all,
Following this discussion:
https://lore.kernel.org/all/20260405122749.4990dcb538d457769a3276e0@linux-foundation.org/
in which Andrew brought up the possibility of moving kconfirm in-tree,
I've prepared this RFC to do so. See also kconfirm's introduction to the
mailing list:
https://lore.kernel.org/all/6ec4df6d-1445-48ca-8f54-1d1a83c4716d@gmail.com/
kconfirm currently detects dead code (defaults, dependencies, selects, and
ranges), and includes an optional check for dead links in the help texts.
False Alarms:
kconfirm aims for zero false-positives, which is currently true for dead
code detection (as far as I'm aware - but there are hundreds to go
through); this is not really possible for dead link checks, as this
depends on an internet connection, and we do not attempt to bypass bot
blocks. For this reason, dead link checking is disabled by default, but
I've provided an example of how to enable it. Additionally, you can view
my previous message to the mailing list with hand-verified dead links
here:
https://lore.kernel.org/all/6732bf08-41ee-40c4-83b2-4ae8bc0da7cf@gmail.com/
Current State of Alarms:
The last time I checked linux-next (next-20260427), there were 579
instances of dead code, and 81 unique dead links. The most critical check
is the dead default statements, which has surfaced a few misconfiguration
bugs (fortunately, just for kunit tests), see examples:
https://lore.kernel.org/all/20260323124118.1414913-1-julianbraha@gmail.com/
and:
https://lore.kernel.org/all/20260323123536.1413732-1-julianbraha@gmail.com/
But hopefully kconfirm can ease maintenance and we can prevent more of
these from making it into the tree in the future.
Use it:
You can test out kconfirm with this patch series by compiling and running
kconfirm like this:
`make kconfirm`
You can enable dead link checks in the help texts by
passing KCONFIRM_ARGS="--enable dead_links", like this:
`KCONFIRM_ARGS="--enable dead_links" make kconfirm`
Note that it is not architecture-specific; it runs tree-wide.
If you run it on linux-next, you should find 579 instances of dead code.
Originally this number was even higher, but many patches have since been
applied to linux-next, and included in linux 7.1-rc1. Thank you to the
maintainers and reviewers for their feedback and patience :)
You will need Rust with Cargo and an internet connection to download the
dependencies for compilation. Originally, I planned to vendor the
dependencies and submit the entirety of the code here, in-tree, but the
dependencies (and their dependencies...) are too large (somehow, a
whopping 264MB!), so instead I am proposing to add just the tool's own
code.
I've included the Rust for Linux team to discuss the build system changes,
as I'd like know if there is a better way to integrate this with `make`,
and if there's a better solution as far as the dependencies and Cargo go.
Thanks,
Julian Braha
Julian Braha (2):
scripts: add kconfirm
Documentation: dev-tools: add kconfirm
Documentation/dev-tools/index.rst | 1 +
Documentation/dev-tools/kconfirm.rst | 147 ++
Makefile | 12 +-
scripts/Makefile | 2 +-
scripts/kconfirm/Cargo.lock | 1710 +++++++++++++++++
scripts/kconfirm/Cargo.toml | 21 +
scripts/kconfirm/Makefile | 28 +
scripts/kconfirm/kconfirm-lib/Cargo.toml | 16 +
scripts/kconfirm/kconfirm-lib/src/analyze.rs | 593 ++++++
scripts/kconfirm/kconfirm-lib/src/checks.rs | 257 +++
.../kconfirm/kconfirm-lib/src/dead_links.rs | 63 +
scripts/kconfirm/kconfirm-lib/src/lib.rs | 55 +
scripts/kconfirm/kconfirm-lib/src/output.rs | 52 +
.../kconfirm/kconfirm-lib/src/symbol_table.rs | 209 ++
scripts/kconfirm/kconfirm-linux/Cargo.toml | 14 +
scripts/kconfirm/kconfirm-linux/src/lib.rs | 129 ++
scripts/kconfirm/kconfirm-linux/src/main.rs | 74 +
17 files changed, 3379 insertions(+), 4 deletions(-)
create mode 100644 Documentation/dev-tools/kconfirm.rst
create mode 100644 scripts/kconfirm/Cargo.lock
create mode 100644 scripts/kconfirm/Cargo.toml
create mode 100644 scripts/kconfirm/Makefile
create mode 100644 scripts/kconfirm/kconfirm-lib/Cargo.toml
create mode 100644 scripts/kconfirm/kconfirm-lib/src/analyze.rs
create mode 100644 scripts/kconfirm/kconfirm-lib/src/checks.rs
create mode 100644 scripts/kconfirm/kconfirm-lib/src/dead_links.rs
create mode 100644 scripts/kconfirm/kconfirm-lib/src/lib.rs
create mode 100644 scripts/kconfirm/kconfirm-lib/src/output.rs
create mode 100644 scripts/kconfirm/kconfirm-lib/src/symbol_table.rs
create mode 100644 scripts/kconfirm/kconfirm-linux/Cargo.toml
create mode 100644 scripts/kconfirm/kconfirm-linux/src/lib.rs
create mode 100644 scripts/kconfirm/kconfirm-linux/src/main.rs
--
2.53.0
next reply other threads:[~2026-04-27 17:44 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-27 17:44 Julian Braha [this message]
2026-04-27 17:44 ` [RFC PATCH 1/2] scripts: add kconfirm Julian Braha
2026-04-27 20:48 ` Greg KH
2026-04-28 7:01 ` Jonathan Corbet
2026-04-27 17:44 ` [RFC PATCH 2/2] Documentation: dev-tools: " Julian Braha
2026-04-27 18:17 ` Miguel Ojeda
2026-04-27 19:33 ` Arnd Bergmann
2026-04-28 11:51 ` Miguel Ojeda
2026-04-28 12:58 ` Gary Guo
2026-04-28 17:01 ` Julian Braha
2026-04-28 8:23 ` Jani Nikula
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260427174429.779474-1-julianbraha@gmail.com \
--to=julianbraha@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=corbet@lwn.net \
--cc=gregkh@linuxfoundation.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ljs@kernel.org \
--cc=masahiroy@kernel.org \
--cc=nathan@kernel.org \
--cc=nsc@kernel.org \
--cc=ojeda@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox