| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- .. _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.
|