On 16 October 2026 16:28:25 BST, Sasha Levin <[email protected]> wrote:
>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.

Reviewed-by: Bradley Morgan <[email protected]>


>
>Assisted-by: LLM
>Signed-off-by: Sasha Levin <[email protected]>
>---
> 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.
>

--- Thanks!
"I'm not a very positive person" - Linus torvalds

Reply via email to