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