.. _stable_kernel_rules:

Everything you ever wanted to know about Linux -stable releases
===============================================================

Rules on what kind of patches are accepted, and which ones are not, into the
"-stable" tree:

- It or an equivalent fix must already exist in Linux mainline (upstream).
- It must be obviously correct and tested.
- It cannot be bigger than 100 lines, with context.
- It must follow the
  :ref:`Documentation/process/submitting-patches.rst <submittingpatches>`
  rules.
- It must either fix a real bug that bothers people or just add a device ID.
  To elaborate on the former:

  - It fixes a problem like an oops, a hang, data corruption, a real security
    issue, a hardware quirk, a build error (but not for things marked
    CONFIG_BROKEN), or some "oh, that's not good" issue.
  - Serious issues as reported by a user of a distribution kernel may also
    be considered if they fix a notable performance or interactivity issue.
    As these fixes are not as obvious and have a higher risk of a subtle
    regression they should only be submitted by a distribution kernel
    maintainer and include an addendum linking to a bugzilla entry if it
    exists and additional information on the user-visible impact.
  - No "This could be a problem..." type of things like a "theoretical race
    condition", unless an explanation of how the bug can be exploited is also
    provided.
  - No "trivial" fixes without benefit for users (spelling changes, whitespace
    cleanups, etc).


Procedure for submitting patches to the -stable tree
----------------------------------------------------

.. note::

   Security patches should not be handled (solely) by the -stable review
   process but should follow the procedures in
   :ref:`Documentation/process/security-bugs.rst <securitybugs>`.

There are three options to submit a change to -stable trees:

1. Add a 'stable tag' to the description of a patch you then submit for
   mainline inclusion.
2. Ask the stable team to pick up a patch already mainlined.
3. Submit a patch to the stable team that is equivalent to a change already
   mainlined.

The sections below describe each of the options in more detail.

:ref:`option_1` is **strongly** preferred, it is the easiest and most common.
:ref:`option_2` is mainly meant for changes where backporting was not considered
at the time of submission. :ref:`option_3` is an alternative to the two earlier
options for cases where a mainlined patch needs adjustments to apply in older
series (for example due to API changes).

When using option 2 or 3 you can ask for your change to be included in specific
stable series. When doing so, ensure the fix or an equivalent is applicable,
submitted, or already present in all newer stable trees still supported. This is
meant to prevent regressions that users might later encounter on updating, if
e.g. a fix merged for 5.19-rc1 would be backported to 5.10.y, but not to 5.15.y.

.. _option_1:

Option 1
********

To have a patch you submit for mainline inclusion later automatically picked up
for stable trees, add this tag in the sign-off area::

  Cc: stable@vger.kernel.org

Use ``Cc: stable@kernel.org`` instead when fixing unpublished vulnerabilities:
it reduces the chance of accidentally exposing the fix to the public by way of
'git send-email', as mails sent to that address are not delivered anywhere.

Once the patch is mainlined it will be applied to the stable tree without
anything else needing to be done by the author or subsystem maintainer.

To send additional instructions to the stable team, use a shell-style inline
comment to pass arbitrary or predefined notes:

* Specify any additional patch prerequisites for cherry picking::

    Cc: <stable@vger.kernel.org> # 3.3.x: a1f84a3: sched: Check for idle
    Cc: <stable@vger.kernel.org> # 3.3.x: 1b9508f: sched: Rate-limit newidle
    Cc: <stable@vger.kernel.org> # 3.3.x: fd21073: sched: Fix affinity logic
    Cc: <stable@vger.kernel.org> # 3.3.x
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

  The tag sequence has the meaning of::

    git cherry-pick a1f84a3
    git cherry-pick 1b9508f
    git cherry-pick fd21073
    git cherry-pick <this commit>

  Note that for a patch series, you do not have to list as prerequisites the
  patches present in the series itself. For example, if you have the following
  patch series::

    patch1
    patch2

  where patch2 depends on patch1, you do not have to list patch1 as
  prerequisite of patch2 if you have already marked patch1 for stable
  inclusion.

* Point out kernel version prerequisites::

    Cc: <stable@vger.kernel.org> # 3.3.x

  The tag has the meaning of::

    git cherry-pick <this commit>

  For each "-stable" tree starting with the specified version.

  Note, such tagging is unnecessary if the stable team can derive the
  appropriate versions from Fixes: tags.

* Delay pick up of patches::

    Cc: <stable@vger.kernel.org> # after -rc3

* Point out known problems::

    Cc: <stable@vger.kernel.org> # see patch description, needs adjustments for <= 6.3

There furthermore is a variant of the stable tag you can use to make the stable
team's backporting tools (e.g AUTOSEL or scripts that look for commits
containing a 'Fixes:' tag) ignore a change::

     Cc: <stable+noautosel@kernel.org> # reason goes here, and must be present

.. _option_2:

Option 2
********

If the patch already has been merged to mainline, send an email to
stable@vger.kernel.org containing the subject of the patch, the commit ID,
why you think it should be applied, and what kernel versions you wish it to
be applied to.

.. _option_3:

Option 3
********

Send the patch, after verifying that it follows the above rules, to
stable@vger.kernel.org and mention the kernel versions you wish it to be applied
to. When doing so, you must note the upstream commit ID in the changelog of your
submission with a separate line above the commit text, like this::

  commit <sha1> upstream.

Or alternatively::

  [ Upstream commit <sha1> ]

If the submitted patch deviates from the original upstream patch (for example
because it had to be adjusted for the older API), this must be very clearly
documented and justified in the patch description.


Following the submission
------------------------

The sender will receive an ACK when the patch has been accepted into the
queue, or a NAK if the patch is rejected.  This response might take a few
days, according to the schedules of the stable team members.

If accepted, the patch will be added to the -stable queue, for review by other
developers and by the relevant subsystem maintainer.


Review cycle
------------

- When the -stable maintainers decide for a review cycle, the patches will be
  sent to the review committee, and the maintainer of the affected area of
  the patch (unless the submitter is the maintainer of the area) and CC: to
  the linux-kernel mailing list.
- The review committee has 48 hours in which to ACK or NAK the patch.
- If the patch is rejected by a member of the committee, or linux-kernel
  members object to the patch, bringing up issues that the maintainers and
  members did not realize, the patch will be dropped from the queue.
- The ACKed patches will be posted again as part of release candidate (-rc)
  to be tested by developers and testers.
- Usually only one -rc release is made, however if there are any outstanding
  issues, some patches may be modified or dropped or additional patches may
  be queued. Additional -rc releases are then released and tested until no
  issues are found.
- Responding to the -rc releases can be done on the mailing list by sending
  a "Tested-by:" email with any testing information desired. The "Tested-by:"
  tags will be collected and added to the release commit.
- At the end of the review cycle, the new -stable release will be released
  containing all the queued and tested patches.
- Security patches will be accepted into the -stable tree directly from the
  security kernel team, and not go through the normal review cycle.
  Contact the kernel security team for more details on this procedure.


Trees
-----

- The queues of patches, for both completed versions and in progress
  versions can be found at:

    https://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git

- The finalized and tagged releases of all stable kernels can be found
  in separate branches per version at:

    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

- The release candidate of all stable kernel versions can be found at:

    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/

  .. warning::
     The -stable-rc tree is a snapshot in time of the stable-queue tree and
     will change frequently, hence will be rebased often. It should only be
     used for testing purposes (e.g. to be consumed by CI systems).


Review committee
----------------

- This is made up of a number of kernel developers who have volunteered for
  this task, and a few that haven't.
