From: Sasha Levin <sashal@kernel.org>
To: workflows@vger.kernel.org, ksummit@lists.linux.dev
Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
Jonathan Corbet <corbet@lwn.net>,
Shuah Khan <skhan@linuxfoundation.org>,
Randy Dunlap <rdunlap@infradead.org>,
Mark Brown <broonie@kernel.org>, Theodore Ts'o <tytso@mit.edu>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Leon Romanovsky <leon@kernel.org>,
Konstantin Ryabitsev <konstantin@linuxfoundation.org>,
Thorsten Leemhuis <linux@leemhuis.info>,
"Michael S. Tsirkin" <mst@redhat.com>,
Kees Cook <kees@kernel.org>,
Geert Uytterhoeven <geert@linux-m68k.org>,
Dan Carpenter <error27@gmail.com>,
Miguel Ojeda <ojeda@kernel.org>, Sasha Levin <sashal@kernel.org>
Subject: [PATCH v3 5/7] agents: add a skill to determine stable tags
Date: Fri, 16 Oct 2026 11:28:25 -0400 [thread overview]
Message-ID: <20261016152828.3765695-6-sashal@kernel.org> (raw)
In-Reply-To: <20261016152828.3765695-1-sashal@kernel.org>
Whether a fix needs a stable tag, and which releases it should reach, is
decided by hand and is often missed or left too broad. Add a skill that
sends the agent to stable-kernel-rules.rst for the decision and the tag
format, lists the kinds of changes the stable trees take and leave out
in practice, and adds the checks agents tend to get wrong: finding the
first release that contains each introducing commit, checking that the
fix applies to the oldest affected release, giving every stable tag the
same version, and following the subsystem's stable policy.
If the decision cannot be made, the skill returns no tag. Point the
bug-fix procedure in coding-assistants.rst at the skill.
Assisted-by: LLM
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
Documentation/process/coding-assistants.rst | 7 +-
agents/skills/stable-tag/SKILL.md | 72 +++++++++++++++++++++
2 files changed, 77 insertions(+), 2 deletions(-)
create mode 100644 agents/skills/stable-tag/SKILL.md
diff --git a/Documentation/process/coding-assistants.rst b/Documentation/process/coding-assistants.rst
index ddff951856dce..fc4e98fd96e11 100644
--- a/Documentation/process/coding-assistants.rst
+++ b/Documentation/process/coding-assistants.rst
@@ -37,6 +37,8 @@ The following skills are available:
* agents/skills/find-fixes/SKILL.md determines the Fixes tag of a bug fix, or
checks an existing one.
+* agents/skills/stable-tag/SKILL.md decides whether a fix goes to stable and
+ returns its stable tag, or checks an existing one.
Licensing and Legal Requirements
================================
@@ -101,8 +103,9 @@ these steps:
another one. The fix must not add build warnings and must pass the
checkpatch.pl checks (see submitting-patches.rst).
6. Commit the working fix with a detailed message describing the problem, the
- solution and a Fixes tag determined with the find-fixes skill. Do not add a
- Signed-off-by tag, and add an Assisted-by tag, as described above.
+ solution, a Fixes tag determined with the find-fixes skill, and a stable tag
+ if the stable-tag skill calls for one. Do not add a Signed-off-by tag, and
+ add an Assisted-by tag, as described above.
7. Identify the maintainers and lists using scripts/get_maintainer.pl.
Documentation/process/security-bugs.rst shows how to do that.
8. Indicate what could not be done. If the fix could not be built or tested, or
diff --git a/agents/skills/stable-tag/SKILL.md b/agents/skills/stable-tag/SKILL.md
new file mode 100644
index 0000000000000..d87bcc95089d3
--- /dev/null
+++ b/agents/skills/stable-tag/SKILL.md
@@ -0,0 +1,72 @@
+---
+# SPDX-License-Identifier: GPL-2.0-only
+name: stable-tag
+description: >-
+ Decide whether a Linux kernel fix should be backported to stable kernels
+ and return verified Cc: stable tag lines. Use when preparing or reviewing
+ bug-fix patches, drafting their commit messages, or checking an existing
+ stable tag.
+---
+
+# Determine a stable tag
+
+Read Documentation/process/stable-kernel-rules.rst. It says which changes go
+to stable and how to write the tag, its prerequisites and its version. Follow
+the rules for skills in Documentation/process/coding-assistants.rst.
+
+Judge a change by what it does, not by how its description labels it: a
+"cleanup" that releases a resource on an error path fixes a leak. In practice,
+the stable trees take:
+
+- Fixes for crashes, oopses, BUG and WARN splats, hangs, lockups, RCU stalls,
+ deadlocks, data corruption and security issues.
+- Fixes for use-after-free, double free, NULL pointer dereferences,
+ out-of-bounds accesses, integer overflows, uninitialized data, reference
+ counting errors, and memory or resource leaks.
+- Fixes for races, including data races.
+- Fixes for incorrect behavior, such as wrong results, wrong hardware
+ programming, or endianness and type errors.
+- Fixes for problems reported by syzbot, other fuzzers, or the KASAN, KMSAN,
+ KCSAN and UBSAN sanitizers.
+- New device IDs and quirks for drivers that exist in the stable trees, device
+ tree fixes, and device tree additions for hardware that existing drivers
+ support.
+- Corrections to documentation that is wrong.
+- Performance fixes that prevent lockups, stalls or hangs.
+- Reverts of commits that are in a released kernel.
+- Fixes for bugs introduced by commits that were backported to stable.
+
+They do not take the following, unless a fix that is taken depends on it:
+
+- New features, new user-visible interfaces or behavior, new drivers, and new
+ module parameters or sysfs attributes.
+- Refactoring, code movement and other preparation patches.
+- Optimizations that do not prevent lockups, stalls or hangs.
+- Cleanups that do not change behavior, such as style, renames and comment
+ changes.
+
+Then work out which releases need the fix:
+
+- Determine the Fixes tags with the find-fixes skill first. A change with no
+ introducing commit, such as a new device ID, a quirk or a build fix, or a
+ bug older than the available history, affects every release that contains
+ the code it changes. Otherwise, if the Fixes tags are unresolved, so is the
+ stable decision.
+- For each Fixes tag, find the first release that contains the commit, not the
+ release it was based on. If no release contains it, check whether the
+ commit was itself backported to stable.
+- Check that everything the fix uses exists in the oldest affected release.
+ If something is missing, list the commit that added it as a prerequisite
+ if it is small and fit for stable, or start the tag at the first release
+ that has it.
+- Give every stable tag in a commit the same version: a tag without a version
+ asks for every stable tree and overrides the versions in the other tags.
+ The stable tooling reads the first version number in a tag comment as the
+ version, so describe what older trees need in the commit message.
+- Follow the stable tag policy in the maintainer profiles, the `P:` entries in
+ MAINTAINERS, for the changed files.
+- Ask the caller whether the fix addresses an unpublished vulnerability, as
+ described in Documentation/process/threat-model.rst.
+
+Return the tag lines with the reasons for them, or the reasons for no tag. If
+the decision cannot be made, return no tag and say what is missing.
--
2.53.0
next prev parent reply other threads:[~2026-10-16 15:28 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-16 15:28 [PATCH v3 0/7] agents: add skills for Fixes tags, stable tags, similar bugs, and commit messages Sasha Levin
2026-10-16 15:28 ` [PATCH v3 1/7] agents: add infrastructure for agent resources Sasha Levin
2026-10-16 16:02 ` Bradley Morgan
2026-10-16 15:28 ` [PATCH v3 2/7] docs: submitting-patches: say which commit a Fixes tag names Sasha Levin
2026-10-16 16:03 ` Bradley Morgan
2026-10-16 15:28 ` [PATCH v3 3/7] docs: stable-kernel-rules: drop rules the stable trees do not apply Sasha Levin
2026-10-16 15:59 ` Greg Kroah-Hartman
2026-10-16 16:01 ` Bradley Morgan
2026-10-16 15:28 ` [PATCH v3 4/7] agents: add a skill to determine Fixes tags Sasha Levin
2026-10-16 16:04 ` Bradley Morgan
2026-10-16 15:28 ` Sasha Levin [this message]
2026-10-16 16:04 ` [PATCH v3 5/7] agents: add a skill to determine stable tags Bradley Morgan
2026-10-16 15:28 ` [PATCH v3 6/7] agents: add a skill to find other instances of a fixed bug Sasha Levin
2026-10-16 16:05 ` Bradley Morgan
2026-10-16 18:00 ` Julia Lawall
2026-10-16 18:09 ` Sasha Levin
2026-10-16 18:17 ` Julia Lawall
2026-10-16 18:32 ` Sasha Levin
2026-10-16 15:28 ` [PATCH v3 7/7] agents: add a skill to write commit messages Sasha Levin
2026-10-16 16:05 ` Bradley Morgan
2026-10-16 16:00 ` [PATCH v3 0/7] agents: add skills for Fixes tags, stable tags, similar bugs, and " Miguel Ojeda
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=20261016152828.3765695-6-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=broonie@kernel.org \
--cc=corbet@lwn.net \
--cc=error27@gmail.com \
--cc=geert@linux-m68k.org \
--cc=gregkh@linuxfoundation.org \
--cc=kees@kernel.org \
--cc=konstantin@linuxfoundation.org \
--cc=ksummit@lists.linux.dev \
--cc=laurent.pinchart@ideasonboard.com \
--cc=leon@kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@leemhuis.info \
--cc=mst@redhat.com \
--cc=ojeda@kernel.org \
--cc=rdunlap@infradead.org \
--cc=skhan@linuxfoundation.org \
--cc=tytso@mit.edu \
--cc=workflows@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.