^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) .. _stable_kernel_rules:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) Everything you ever wanted to know about Linux -stable releases
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) ===============================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) Rules on what kind of patches are accepted, and which ones are not, into the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) "-stable" tree:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) - It must be obviously correct and tested.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) - It cannot be bigger than 100 lines, with context.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) - It must fix only one thing.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) - It must fix a real bug that bothers people (not a, "This could be a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) problem..." type thing).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) - It must fix a problem that causes a build error (but not for things
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) marked CONFIG_BROKEN), an oops, a hang, data corruption, a real
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) security issue, or some "oh, that's not good" issue. In short, something
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) critical.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) - Serious issues as reported by a user of a distribution kernel may also
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) be considered if they fix a notable performance or interactivity issue.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) As these fixes are not as obvious and have a higher risk of a subtle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) regression they should only be submitted by a distribution kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) maintainer and include an addendum linking to a bugzilla entry if it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) exists and additional information on the user-visible impact.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) - New device IDs and quirks are also accepted.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) - No "theoretical race condition" issues, unless an explanation of how the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) race can be exploited is also provided.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) - It cannot contain any "trivial" fixes in it (spelling changes,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) whitespace cleanups, etc).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) - It must follow the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) :ref:`Documentation/process/submitting-patches.rst <submittingpatches>`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) rules.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) - It or an equivalent fix must already exist in Linus' tree (upstream).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) Procedure for submitting patches to the -stable tree
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) ----------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) - Security patches should not be handled (solely) by the -stable review
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) process but should follow the procedures in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) :ref:`Documentation/admin-guide/security-bugs.rst <securitybugs>`.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) For all other submissions, choose one of the following procedures
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) -----------------------------------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) .. _option_1:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) Option 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) ********
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) To have the patch automatically included in the stable tree, add the tag
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) .. code-block:: none
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) Cc: stable@vger.kernel.org
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) in the sign-off area. Once the patch is merged it will be applied to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) the stable tree without anything else needing to be done by the author
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) or subsystem maintainer.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) .. _option_2:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) Option 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) ********
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) After the patch has been merged to Linus' tree, send an email to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) stable@vger.kernel.org containing the subject of the patch, the commit ID,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) why you think it should be applied, and what kernel version you wish it to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) be applied to.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) .. _option_3:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) Option 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) ********
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) Send the patch, after verifying that it follows the above rules, to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) stable@vger.kernel.org. You must note the upstream commit ID in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) changelog of your submission, as well as the kernel version you wish
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) it to be applied to.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) :ref:`option_1` is **strongly** preferred, is the easiest and most common.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) :ref:`option_2` and :ref:`option_3` are more useful if the patch isn't deemed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) worthy at the time it is applied to a public git tree (for instance, because
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) it deserves more regression testing first). :ref:`option_3` is especially
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) useful if the patch needs some special handling to apply to an older kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) (e.g., if API's have changed in the meantime).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) Note that for :ref:`option_3`, if the patch deviates from the original
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) upstream patch (for example because it had to be backported) this must be very
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) clearly documented and justified in the patch description.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) The upstream commit ID must be specified with a separate line above the commit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) text, like this:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) .. code-block:: none
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) commit <sha1> upstream.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) Additionally, some patches submitted via :ref:`option_1` may have additional
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) patch prerequisites which can be cherry-picked. This can be specified in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) following format in the sign-off area:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) .. code-block:: none
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) Cc: <stable@vger.kernel.org> # 3.3.x: a1f84a3: sched: Check for idle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) Cc: <stable@vger.kernel.org> # 3.3.x: 1b9508f: sched: Rate-limit newidle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) Cc: <stable@vger.kernel.org> # 3.3.x: fd21073: sched: Fix affinity logic
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) Cc: <stable@vger.kernel.org> # 3.3.x
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) Signed-off-by: Ingo Molnar <mingo@elte.hu>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) The tag sequence has the meaning of:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) .. code-block:: none
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) git cherry-pick a1f84a3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) git cherry-pick 1b9508f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) git cherry-pick fd21073
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) git cherry-pick <this commit>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) Also, some patches may have kernel version prerequisites. This can be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) specified in the following format in the sign-off area:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) .. code-block:: none
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) Cc: <stable@vger.kernel.org> # 3.3.x
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) The tag has the meaning of:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) .. code-block:: none
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) git cherry-pick <this commit>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) For each "-stable" tree starting with the specified version.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) Following the submission:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) - The sender will receive an ACK when the patch has been accepted into the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) queue, or a NAK if the patch is rejected. This response might take a few
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) days, according to the developer's schedules.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) - If accepted, the patch will be added to the -stable queue, for review by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) other developers and by the relevant subsystem maintainer.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) Review cycle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) ------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) - When the -stable maintainers decide for a review cycle, the patches will be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) sent to the review committee, and the maintainer of the affected area of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) the patch (unless the submitter is the maintainer of the area) and CC: to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) the linux-kernel mailing list.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) - The review committee has 48 hours in which to ACK or NAK the patch.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) - If the patch is rejected by a member of the committee, or linux-kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) members object to the patch, bringing up issues that the maintainers and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) members did not realize, the patch will be dropped from the queue.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) - At the end of the review cycle, the ACKed patches will be added to the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) latest -stable release, and a new -stable release will happen.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) - Security patches will be accepted into the -stable tree directly from the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) security kernel team, and not go through the normal review cycle.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) Contact the kernel security team for more details on this procedure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) Trees
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) -----
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) - The queues of patches, for both completed versions and in progress
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) versions can be found at:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) https://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) - The finalized and tagged releases of all stable kernels can be found
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) in separate branches per version at:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) - The release candidate of all stable kernel versions can be found at:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) .. warning::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) The -stable-rc tree is a snapshot in time of the stable-queue tree and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) will change frequently, hence will be rebased often. It should only be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) used for testing purposes (e.g. to be consumed by CI systems).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) Review committee
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) ----------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) - This is made up of a number of kernel developers who have volunteered for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) this task, and a few that haven't.