From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2B8952236FD for ; Sun, 5 Apr 2026 17:08:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775408910; cv=none; b=aDR5/2taKVzeBmF6VPPQX03Wnvx+zZeePgcu1Qq5fokRNfNBRXZ3ZXUPZlJY7x7zuc1XAIqbFZr2MRS24OYhWRHyNjrbuVThYLrhFuS5JQLqmax+4JDk3xhiOsRRW4n1WxmnW34r2K4VgUycDNqa173c+HqXsiVpmHCQfpoHYVw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775408910; c=relaxed/simple; bh=iGrEDOx2BwpDeFP3PW0lP41mQacUvsJj+QhMrH2+lsQ=; h=Message-ID:Date:MIME-Version:To:From:Subject:Content-Type; b=RLH21mozX4x84S2Uz/B+Nb85j6tysma37clA1yKcmGtuQeoWL19gnjzf3hHRMMa6LTAUQO9DecqhVfXzC5p955F5y6EMS933K1Pl6wF/wXyofO+LRg0js3cmZT7GgtreT/J/bDOnbo3V+kiZjHMT+0f+0ONGxsxgf4vmiLe8dtk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=XnCfCZHt; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XnCfCZHt" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-4887f49ec5aso46992965e9.1 for ; Sun, 05 Apr 2026 10:08:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775408907; x=1776013707; darn=vger.kernel.org; h=content-transfer-encoding:subject:from:to:content-language :user-agent:mime-version:date:message-id:sender:from:to:cc:subject :date:message-id:reply-to; bh=iGrEDOx2BwpDeFP3PW0lP41mQacUvsJj+QhMrH2+lsQ=; b=XnCfCZHtLf5syhekZG6gFCV9J7aVeIUPdbbrhk8ae8d9zQZoGAI3nc/lhmf7rJqeIV wieDite5TqBlwtSY4NzyP6kAPLcf/0SEXhppQ1kQvF4lUqjgb2AX0Hgl9E96oC3rKBCL B+jlxh52t3CZfwGSfi4cJZpq1YHgjbnpUdsNCb231tW1gMalDt/qkwNkU/g2yxjIr1q2 rKsUegtVHJFyX36sVISYmSi/FYKp4LO890mIe8Spp5zXYuB9HdNrHKLvxS7r8p4QTPrX UV23oeMmz+di/aPBLQRi5IQVR8oZwmaoUYRit04+6AyWLCq8f972xgejdesWbnoFtv2d 26xQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775408907; x=1776013707; h=content-transfer-encoding:subject:from:to:content-language :user-agent:mime-version:date:message-id:sender:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=iGrEDOx2BwpDeFP3PW0lP41mQacUvsJj+QhMrH2+lsQ=; b=FHk88/epkSoP8IE76xV/SHvNedjOlI1jxYBpWkBbZO5dTHAq2UInuZ11m7yOUanzvx QwFFnfL2Xa9cbSOgSyfH0vUFc85EI1yRaRZpJ2OLoB5T754dqLIy/5g54jkaIr57cvX/ /lULpAQkFVBWb/7hc25XY7Byi4h6/sZQQDWntHxcBbvgXzP7X3U6Z77Z12+2c6wQGmlk UNPOd9kGmNEHqB/q4gp11sN2Ph3ZAz6GmyFSgfC17wAgGghwyGQ38Zd9gv7dpTDFU/Qc F75BzcrFfTuu8GMLZntmMsZVtzlu89hTUmPnmVo/7b28DU1xEld8aq6BYyOl/PDdY0Ly zLvA== X-Gm-Message-State: AOJu0YzJUpCEQ3HDhKtiA+xGgrXSfkzUSex6A9oNs7mQwaCzLBcK7sTK n5McTSuZBUYFq+IBEduHloiaO5R5RQD+8UdnfHladPA0FJ4i2TUxJvyPWlw8cG8HQkg= X-Gm-Gg: AeBDieu4Y9sIruiWpxT+VG8tan81K56QHREfQnbiCp+5Ft/zg7h5eCOtWYEGl0j8BKi aAQAtfz57COcqzqXkR2WO+7VRDdvp9OO0OWjtxJXjPwO0C410/FvpG0H+FpDk0RQCb6Hmru3fwq 5xo+39kIKQwtH8Y6rmgxEg/1aykQQ23atKk8ldafzKznahCBQTRyDg02dl6OI6yTJtshKLhZEvf qnyBPeQuvjLuN/wWLaF8+UFys8Z5prj3l1p6LG2Kwh1mXAFNKrN35vxA+Ukuq0D/3vuUzOOIq4r sRpqkRluZxqjFtAAQRg5azrah1Fufrz5/l3Fdhq3eJRrXf2R4rTxz3qrMYw56Xo3+tGp9IdxnxB W//9E1Pst2X1+/CBIlaYEOhpeZ/JcE+lAVTArZgK7S8aGYKKvOOTMzJRdlLNyGsnaMzoTOSKNCd LOZmWNdfsHGkYatJ+id50OWCXxCsbBgrjZsnkeHIxjROJz3b1pv0ltXp7tvg== X-Received: by 2002:a05:600c:a402:b0:485:a4de:f4f9 with SMTP id 5b1f17b1804b1-488997d3431mr108706085e9.27.1775408906577; Sun, 05 Apr 2026 10:08:26 -0700 (PDT) Received: from [10.128.11.51] (195-23-151-163.net.novis.pt. [195.23.151.163]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48899eac9desm71190665e9.31.2026.04.05.10.08.25 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 05 Apr 2026 10:08:26 -0700 (PDT) Sender: Julian Braha Message-ID: <6ec4df6d-1445-48ca-8f54-1d1a83c4716d@gmail.com> Date: Sun, 5 Apr 2026 18:08:25 +0100 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: linux-kernel@vger.kernel.org From: Julian Braha Subject: Introducing kconfirm Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi everyone! And happy easter to those who celebrate. Today I'm making a proper announcement of some tooling I've been building around Kconfig: meet kconfirm! Code available here: https://github.com/julianbraha/kconfirm Originally, the project started out as a new attempt at detecting unmet dependency bugs using SMT solving. While that part is not yet ready for release, the prototype has already detected 1 unmet dependency that Kismet missed! See that patch here: https://lore.kernel.org/all/20260325001522.1727678-1-julianbraha@gmail.com/ During development, I started noticing lots of dead code in the various Kconfig files throughout the kernel. For example, kconfirm currently detects 736 duplicate dependencies in Linux 7.0-rc6. So far, I've hand-verified about 100 of them, and found no false alarms. I've been slowly sending out patches for these, but help is welcome! And if you discover any false alarms, please let me know. Of the types of dead code, the most critical seems to be the dead default statements. These look to me like the code *should not be dead*. I've prioritized these and already sent out patches for them: https://lore.kernel.org/all/20260405161545.161006-1-julianbraha@gmail.com/ https://lore.kernel.org/all/20260323123536.1413732-1-julianbraha@gmail.com/ https://lore.kernel.org/all/20260323124118.1414913-1-julianbraha@gmail.com/ Additionally, I added an optional check to visit all of the links in the Kconfig help texts. kconfirm has discovered 82 unique dead links (after de-duplication). I am probably not the right person to update many of these, so I would appreciate the community's help here. You can find the list of dead links here: https://lore.kernel.org/all/6732bf08-41ee-40c4-83b2-4ae8bc0da7cf@gmail.com/T/#u kconfirm runs in just a few seconds (about 2.5s on my laptop) and is written in Rust. I hope to build much more tooling around Kconfig in the future, such as a proper linter and LSP that integrates these checks. If you use kconfirm, I would appreciate it if you could give the tool credit in your patches. E.g.: "This dead code was detected by kconfirm, a static analysis tool for Kconfig." Unless the maintainers have some other preferred format. Finally, if you value this work, please consider sponsoring me on Liberapay, or GitHub Sponsors so that I can devote more time to this: 1. Liberapay: https://liberapay.com/julianbraha 2. GitHub Sponsors: https://github.com/sponsors/julianbraha Once I've finished the SMT solving, I will release v1.0. Best regards, Julian Braha