1028 lines
47 KiB
ReStructuredText
1028 lines
47 KiB
ReStructuredText
.. SPDX-License-Identifier: (GPL-2.0+ OR CC-BY-4.0)
|
|
.. See the bottom of this file for additional redistribution information.
|
|
|
|
Handling regressions
|
|
++++++++++++++++++++
|
|
|
|
*We don't cause regressions* -- this document describes what this "first rule of
|
|
Linux kernel development" means in practice for developers. It complements
|
|
Documentation/admin-guide/reporting-regressions.rst, which covers the topic from a
|
|
user's point of view; if you never read that text, go and at least skim over it
|
|
before continuing here.
|
|
|
|
The important bits (aka "The TL;DR")
|
|
====================================
|
|
|
|
#. Ensure subscribers of the `regression mailing list <https://lore.kernel.org/regressions/>`_
|
|
(regressions@lists.linux.dev) quickly become aware of any new regression
|
|
report:
|
|
|
|
* When receiving a mailed report that did not CC the list, bring it into the
|
|
loop by immediately sending at least a brief "Reply-all" with the list
|
|
CCed.
|
|
|
|
* Forward or bounce any reports submitted in bug trackers to the list.
|
|
|
|
#. Make the Linux kernel regression tracking bot "regzbot" track the issue (this
|
|
is optional, but recommended):
|
|
|
|
* For mailed reports, check if the reporter included a line like ``#regzbot
|
|
introduced: v5.13..v5.14-rc1``. If not, send a reply (with the regressions
|
|
list in CC) containing a paragraph like the following, which tells regzbot
|
|
when the issue started to happen::
|
|
|
|
#regzbot ^introduced: 1f2e3d4c5b6a
|
|
|
|
* When forwarding reports from a bug tracker to the regressions list (see
|
|
above), include a paragraph like the following::
|
|
|
|
#regzbot introduced: v5.13..v5.14-rc1
|
|
#regzbot from: Some N. Ice Human <some.human@example.com>
|
|
#regzbot monitor: http://some.bugtracker.example.com/ticket?id=123456789
|
|
|
|
#. When submitting fixes for regressions, add "Closes:" tags to the patch
|
|
description pointing to all places where the issue was reported, as
|
|
mandated by Documentation/process/submitting-patches.rst and
|
|
:ref:`Documentation/process/5.Posting.rst <development_posting>`. If you are
|
|
only fixing part of the issue that caused the regression, you may use
|
|
"Link:" tags instead. regzbot currently makes no distinction between the
|
|
two.
|
|
|
|
#. Try to fix regressions quickly once the culprit has been identified; fixes
|
|
for most regressions should be merged within two weeks, but some need to be
|
|
resolved within two or three days.
|
|
|
|
|
|
All the details on Linux kernel regressions relevant for developers
|
|
===================================================================
|
|
|
|
|
|
The important basics in more detail
|
|
-----------------------------------
|
|
|
|
|
|
What to do when receiving regression reports
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Ensure the Linux kernel's regression tracker and others subscribers of the
|
|
`regression mailing list <https://lore.kernel.org/regressions/>`_
|
|
(regressions@lists.linux.dev) become aware of any newly reported regression:
|
|
|
|
* When you receive a report by mail that did not CC the list, immediately bring
|
|
it into the loop by sending at least a brief "Reply-all" with the list CCed;
|
|
try to ensure it gets CCed again in case you reply to a reply that omitted
|
|
the list.
|
|
|
|
* If a report submitted in a bug tracker hits your Inbox, forward or bounce it
|
|
to the list. Consider checking the list archives beforehand, if the reporter
|
|
already forwarded the report as instructed by
|
|
Documentation/admin-guide/reporting-issues.rst.
|
|
|
|
When doing either, consider making the Linux kernel regression tracking bot
|
|
"regzbot" immediately start tracking the issue:
|
|
|
|
* For mailed reports, check if the reporter included a "regzbot command" like
|
|
``#regzbot introduced: 1f2e3d4c5b6a``. If not, send a reply (with the
|
|
regressions list in CC) with a paragraph like the following:::
|
|
|
|
#regzbot ^introduced: v5.13..v5.14-rc1
|
|
|
|
This tells regzbot the version range in which the issue started to happen;
|
|
you can specify a range using commit-ids as well or state a single commit-id
|
|
in case the reporter bisected the culprit.
|
|
|
|
Note the caret (^) before the "introduced": it tells regzbot to treat the
|
|
parent mail (the one you reply to) as the initial report for the regression
|
|
you want to see tracked; that's important, as regzbot will later look out
|
|
for patches with "Closes:" tags pointing to the report in the archives on
|
|
lore.kernel.org.
|
|
|
|
* When forwarding a regression reported to a bug tracker, include a paragraph
|
|
with these regzbot commands::
|
|
|
|
#regzbot introduced: 1f2e3d4c5b6a
|
|
#regzbot from: Some N. Ice Human <some.human@example.com>
|
|
#regzbot monitor: http://some.bugtracker.example.com/ticket?id=123456789
|
|
|
|
Regzbot will then automatically associate patches with the report that
|
|
contain "Closes:" tags pointing to your mail or the mentioned ticket.
|
|
|
|
What's important when fixing regressions
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
You don't need to do anything special when submitting fixes for regression, just
|
|
remember to do what Documentation/process/submitting-patches.rst,
|
|
:ref:`Documentation/process/5.Posting.rst <development_posting>`, and
|
|
Documentation/process/stable-kernel-rules.rst already explain in more detail:
|
|
|
|
* Point to all places where the issue was reported using "Closes:" tags::
|
|
|
|
Closes: https://lore.kernel.org/r/30th.anniversary.repost@klaava.Helsinki.FI/
|
|
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=1234567890
|
|
|
|
If you are only fixing part of the issue, you may use "Link:" instead as
|
|
described in the first document mentioned above. regzbot currently treats
|
|
both of these equivalently and considers the linked reports as resolved.
|
|
|
|
* Add a "Fixes:" tag to specify the commit causing the regression.
|
|
|
|
* If the culprit was merged in an earlier development cycle, explicitly mark
|
|
the fix for backporting using the ``Cc: stable@vger.kernel.org`` tag.
|
|
|
|
All this is expected from you and important when it comes to regression, as
|
|
these tags are of great value for everyone (you included) that might be looking
|
|
into the issue weeks, months, or years later. These tags are also crucial for
|
|
tools and scripts used by other kernel developers or Linux distributions; one of
|
|
these tools is regzbot, which heavily relies on the "Closes:" tags to associate
|
|
reports for regression with changes resolving them.
|
|
|
|
Expectations and best practices for fixing regressions
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
As a Linux kernel developer, you are expected to give your best to prevent
|
|
situations where a regression caused by a recent change of yours leaves users
|
|
only these options:
|
|
|
|
* Run a kernel with a regression that impacts usage.
|
|
|
|
* Switch to an older or newer kernel series.
|
|
|
|
* Continue running an outdated and thus potentially insecure kernel for more
|
|
than three weeks after the regression's culprit was identified. Ideally it
|
|
should be less than two. And it ought to be just a few days, if the issue is
|
|
severe or affects many users -- either in general or in prevalent
|
|
environments.
|
|
|
|
How to realize that in practice depends on various factors. Use the following
|
|
rules of thumb as a guide.
|
|
|
|
In general:
|
|
|
|
* Prioritize work on regressions over all other Linux kernel work, unless the
|
|
latter concerns a severe issue (e.g. acute security vulnerability, data loss,
|
|
bricked hardware, ...).
|
|
|
|
* Expedite fixing mainline regressions that recently made it into a proper
|
|
mainline, stable, or longterm release (either directly or via backport).
|
|
|
|
* Do not consider regressions from the current cycle as something that can wait
|
|
till the end of the cycle, as the issue might discourage or prevent users and
|
|
CI systems from testing mainline now or generally.
|
|
|
|
* Work with the required care to avoid additional or bigger damage, even if
|
|
resolving an issue then might take longer than outlined below.
|
|
|
|
On timing once the culprit of a regression is known:
|
|
|
|
* Aim to mainline a fix within two or three days, if the issue is severe or
|
|
bothering many users -- either in general or in prevalent conditions like a
|
|
particular hardware environment, distribution, or stable/longterm series.
|
|
|
|
* Aim to mainline a fix by Sunday after the next, if the culprit made it
|
|
into a recent mainline, stable, or longterm release (either directly or via
|
|
backport); if the culprit became known early during a week and is simple to
|
|
resolve, try to mainline the fix within the same week.
|
|
|
|
* For other regressions, aim to mainline fixes before the hindmost Sunday
|
|
within the next three weeks. One or two Sundays later are acceptable, if the
|
|
regression is something people can live with easily for a while -- like a
|
|
mild performance regression.
|
|
|
|
* It's strongly discouraged to delay mainlining regression fixes till the next
|
|
merge window, except when the fix is extraordinarily risky or when the
|
|
culprit was mainlined more than a year ago.
|
|
|
|
On procedure:
|
|
|
|
* Always consider reverting the culprit, as it's often the quickest and least
|
|
dangerous way to fix a regression. Don't worry about mainlining a fixed
|
|
variant later: that should be straight-forward, as most of the code went
|
|
through review once already.
|
|
|
|
* Try to resolve any regressions introduced in mainline during the past
|
|
twelve months before the current development cycle ends: Linus wants such
|
|
regressions to be handled like those from the current cycle, unless fixing
|
|
bears unusual risks.
|
|
|
|
* Consider CCing Linus on discussions or patch review, if a regression seems
|
|
tangly. Do the same in precarious or urgent cases -- especially if the
|
|
subsystem maintainer might be unavailable. Also CC the stable team, when you
|
|
know such a regression made it into a mainline, stable, or longterm release.
|
|
|
|
* For urgent regressions, consider asking Linus to pick up the fix straight
|
|
from the mailing list: he is totally fine with that for uncontroversial
|
|
fixes. Ideally though such requests should happen in accordance with the
|
|
subsystem maintainers or come directly from them.
|
|
|
|
* In case you are unsure if a fix is worth the risk applying just days before
|
|
a new mainline release, send Linus a mail with the usual lists and people in
|
|
CC; in it, summarize the situation while asking him to consider picking up
|
|
the fix straight from the list. He then himself can make the call and when
|
|
needed even postpone the release. Such requests again should ideally happen
|
|
in accordance with the subsystem maintainers or come directly from them.
|
|
|
|
Regarding stable and longterm kernels:
|
|
|
|
* You are free to leave regressions to the stable team, if they at no point in
|
|
time occurred with mainline or were fixed there already.
|
|
|
|
* If a regression made it into a proper mainline release during the past
|
|
twelve months, ensure to tag the fix with "Cc: stable@vger.kernel.org", as a
|
|
"Fixes:" tag alone does not guarantee a backport. Please add the same tag,
|
|
in case you know the culprit was backported to stable or longterm kernels.
|
|
|
|
* When receiving reports about regressions in recent stable or longterm kernel
|
|
series, please evaluate at least briefly if the issue might happen in current
|
|
mainline as well -- and if that seems likely, take hold of the report. If in
|
|
doubt, ask the reporter to check mainline.
|
|
|
|
* Whenever you want to swiftly resolve a regression that recently also made it
|
|
into a proper mainline, stable, or longterm release, fix it quickly in
|
|
mainline; when appropriate thus involve Linus to fast-track the fix (see
|
|
above). That's because the stable team normally does neither revert nor fix
|
|
any changes that cause the same problems in mainline.
|
|
|
|
* In case of urgent regression fixes you might want to ensure prompt
|
|
backporting by dropping the stable team a note once the fix was mainlined;
|
|
this is especially advisable during merge windows and shortly thereafter, as
|
|
the fix otherwise might land at the end of a huge patch queue.
|
|
|
|
On patch flow:
|
|
|
|
* Developers, when trying to reach the time periods mentioned above, remember
|
|
to account for the time it takes to get fixes tested, reviewed, and merged by
|
|
Linus, ideally with them being in linux-next at least briefly. Hence, if a
|
|
fix is urgent, make it obvious to ensure others handle it appropriately.
|
|
|
|
* Reviewers, you are kindly asked to assist developers in reaching the time
|
|
periods mentioned above by reviewing regression fixes in a timely manner.
|
|
|
|
* Subsystem maintainers, you likewise are encouraged to expedite the handling
|
|
of regression fixes. Thus evaluate if skipping linux-next is an option for
|
|
the particular fix. Also consider sending git pull requests more often than
|
|
usual when needed. And try to avoid holding onto regression fixes over
|
|
weekends -- especially when the fix is marked for backporting.
|
|
|
|
|
|
More aspects regarding regressions developers should be aware of
|
|
----------------------------------------------------------------
|
|
|
|
|
|
How to deal with changes where a risk of regression is known
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Evaluate how big the risk of regressions is, for example by performing a code
|
|
search in Linux distributions and Git forges. Also consider asking other
|
|
developers or projects likely to be affected to evaluate or even test the
|
|
proposed change; if problems surface, maybe some solution acceptable for all
|
|
can be found.
|
|
|
|
If the risk of regressions in the end seems to be relatively small, go ahead
|
|
with the change, but let all involved parties know about the risk. Hence, make
|
|
sure your patch description makes this aspect obvious. Once the change is
|
|
merged, tell the Linux kernel's regression tracker and the regressions mailing
|
|
list about the risk, so everyone has the change on the radar in case reports
|
|
trickle in. Depending on the risk, you also might want to ask the subsystem
|
|
maintainer to mention the issue in his mainline pull request.
|
|
|
|
What else is there to known about regressions?
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Check out Documentation/admin-guide/reporting-regressions.rst, it covers a lot
|
|
of other aspects you want might want to be aware of:
|
|
|
|
* the purpose of the "no regressions" rule
|
|
|
|
* what issues actually qualify as regression
|
|
|
|
* who's in charge for finding the root cause of a regression
|
|
|
|
* how to handle tricky situations, e.g. when a regression is caused by a
|
|
security fix or when fixing a regression might cause another one
|
|
|
|
Whom to ask for advice when it comes to regressions
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Send a mail to the regressions mailing list (regressions@lists.linux.dev) while
|
|
CCing the Linux kernel's regression tracker (regressions@leemhuis.info); if the
|
|
issue might better be dealt with in private, feel free to omit the list.
|
|
|
|
|
|
More about regression tracking and regzbot
|
|
------------------------------------------
|
|
|
|
|
|
Why the Linux kernel has a regression tracker, and why is regzbot used?
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Rules like "no regressions" need someone to ensure they are followed, otherwise
|
|
they are broken either accidentally or on purpose. History has shown this to be
|
|
true for the Linux kernel as well. That's why Thorsten Leemhuis volunteered to
|
|
keep an eye on things as the Linux kernel's regression tracker, who's
|
|
occasionally helped by other people. Neither of them are paid to do this,
|
|
that's why regression tracking is done on a best effort basis.
|
|
|
|
Earlier attempts to manually track regressions have shown it's an exhausting and
|
|
frustrating work, which is why they were abandoned after a while. To prevent
|
|
this from happening again, Thorsten developed regzbot to facilitate the work,
|
|
with the long term goal to automate regression tracking as much as possible for
|
|
everyone involved.
|
|
|
|
How does regression tracking work with regzbot?
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
The bot watches for replies to reports of tracked regressions. Additionally,
|
|
it's looking out for posted or committed patches referencing such reports
|
|
with "Closes:" tags; replies to such patch postings are tracked as well.
|
|
Combined this data provides good insights into the current state of the fixing
|
|
process.
|
|
|
|
Regzbot tries to do its job with as little overhead as possible for both
|
|
reporters and developers. In fact, only reporters are burdened with an extra
|
|
duty: they need to tell regzbot about the regression report using the ``#regzbot
|
|
introduced`` command outlined above; if they don't do that, someone else can
|
|
take care of that using ``#regzbot ^introduced``.
|
|
|
|
For developers there normally is no extra work involved, they just need to make
|
|
sure to do something that was expected long before regzbot came to light: add
|
|
links to the patch description pointing to all reports about the issue fixed.
|
|
|
|
Do I have to use regzbot?
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
It's in the interest of everyone if you do, as kernel maintainers like Linus
|
|
Torvalds partly rely on regzbot's tracking in their work -- for example when
|
|
deciding to release a new version or extend the development phase. For this they
|
|
need to be aware of all unfixed regression; to do that, Linus is known to look
|
|
into the weekly reports sent by regzbot.
|
|
|
|
Do I have to tell regzbot about every regression I stumble upon?
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Ideally yes: we are all humans and easily forget problems when something more
|
|
important unexpectedly comes up -- for example a bigger problem in the Linux
|
|
kernel or something in real life that's keeping us away from keyboards for a
|
|
while. Hence, it's best to tell regzbot about every regression, except when you
|
|
immediately write a fix and commit it to a tree regularly merged to the affected
|
|
kernel series.
|
|
|
|
How to see which regressions regzbot tracks currently?
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Check `regzbot's web-interface <https://linux-regtracking.leemhuis.info/regzbot/>`_
|
|
for the latest info; alternatively, `search for the latest regression report
|
|
<https://lore.kernel.org/lkml/?q=%22Linux+regressions+report%22+f%3Aregzbot>`_,
|
|
which regzbot normally sends out once a week on Sunday evening (UTC), which is a
|
|
few hours before Linus usually publishes new (pre-)releases.
|
|
|
|
What places is regzbot monitoring?
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Regzbot is watching the most important Linux mailing lists as well as the git
|
|
repositories of linux-next, mainline, and stable/longterm.
|
|
|
|
What kind of issues are supposed to be tracked by regzbot?
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
The bot is meant to track regressions, hence please don't involve regzbot for
|
|
regular issues. But it's okay for the Linux kernel's regression tracker if you
|
|
use regzbot to track severe issues, like reports about hangs, corrupted data,
|
|
or internal errors (Panic, Oops, BUG(), warning, ...).
|
|
|
|
Can I add regressions found by CI systems to regzbot's tracking?
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Feel free to do so, if the particular regression likely has impact on practical
|
|
use cases and thus might be noticed by users; hence, please don't involve
|
|
regzbot for theoretical regressions unlikely to show themselves in real world
|
|
usage.
|
|
|
|
How to interact with regzbot?
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
By using a 'regzbot command' in a direct or indirect reply to the mail with the
|
|
regression report. These commands need to be in their own paragraph (IOW: they
|
|
need to be separated from the rest of the mail using blank lines).
|
|
|
|
One such command is ``#regzbot introduced: <version or commit>``, which makes
|
|
regzbot consider your mail as a regressions report added to the tracking, as
|
|
already described above; ``#regzbot ^introduced: <version or commit>`` is another
|
|
such command, which makes regzbot consider the parent mail as a report for a
|
|
regression which it starts to track.
|
|
|
|
Once one of those two commands has been utilized, other regzbot commands can be
|
|
used in direct or indirect replies to the report. You can write them below one
|
|
of the `introduced` commands or in replies to the mail that used one of them
|
|
or itself is a reply to that mail:
|
|
|
|
* Set or update the title::
|
|
|
|
#regzbot title: foo
|
|
|
|
* Monitor a discussion or bugzilla.kernel.org ticket where additions aspects of
|
|
the issue or a fix are discussed -- for example the posting of a patch fixing
|
|
the regression::
|
|
|
|
#regzbot monitor: https://lore.kernel.org/all/30th.anniversary.repost@klaava.Helsinki.FI/
|
|
|
|
Monitoring only works for lore.kernel.org and bugzilla.kernel.org; regzbot
|
|
will consider all messages in that thread or ticket as related to the fixing
|
|
process.
|
|
|
|
* Point to a place with further details of interest, like a mailing list post
|
|
or a ticket in a bug tracker that are slightly related, but about a different
|
|
topic::
|
|
|
|
#regzbot link: https://bugzilla.kernel.org/show_bug.cgi?id=123456789
|
|
|
|
* Mark a regression as fixed by a commit that is heading upstream or already
|
|
landed::
|
|
|
|
#regzbot fix: 1f2e3d4c5d
|
|
|
|
* Mark a regression as a duplicate of another one already tracked by regzbot::
|
|
|
|
#regzbot dup-of: https://lore.kernel.org/all/30th.anniversary.repost@klaava.Helsinki.FI/
|
|
|
|
* Mark a regression as invalid::
|
|
|
|
#regzbot invalid: wasn't a regression, problem has always existed
|
|
|
|
Is there more to tell about regzbot and its commands?
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
More detailed and up-to-date information about the Linux
|
|
kernel's regression tracking bot can be found on its
|
|
`project page <https://gitlab.com/knurd42/regzbot>`_, which among others
|
|
contains a `getting started guide <https://gitlab.com/knurd42/regzbot/-/blob/main/docs/getting_started.md>`_
|
|
and `reference documentation <https://gitlab.com/knurd42/regzbot/-/blob/main/docs/reference.md>`_
|
|
which both cover more details than the above section.
|
|
|
|
Quotes from Linus about regression
|
|
----------------------------------
|
|
|
|
The following statements from Linus Torvalds provide some insight into Linux
|
|
"no regressions" rule and how he expects regressions to be handled:
|
|
|
|
On how quickly regressions should be fixed
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* From `2026-01-22 <https://lore.kernel.org/all/CAHk-=wheQNiW_WtHGO7bKkT7Uib-p+ai2JP9M+z+FYcZ6CAxYA@mail.gmail.com/>`_::
|
|
|
|
But a user complaining should basically result in an immediate fix -
|
|
possibly a "revert and rethink".
|
|
|
|
With a later clarification on `2026-01-28 <https://lore.kernel.org/all/CAHk-%3Dwi86AosXs66-yi54%2BmpQjPu0upxB8ZAfG%2BLsMyJmcuMSA@mail.gmail.com/>`_::
|
|
|
|
It's also worth noting that "immediate" obviously doesn't mean "right
|
|
this *second* when the problem has been reported".
|
|
|
|
But if it's a regression with a known commit that caused it, I think
|
|
the rule of thumb should generally be "within a week", preferably
|
|
before the next rc.
|
|
|
|
* From `2023-04-21 <https://lore.kernel.org/all/CAHk-=wgD98pmSK3ZyHk_d9kZ2bhgN6DuNZMAJaV0WTtbkf=RDw@mail.gmail.com/>`_::
|
|
|
|
Known-broken commits either
|
|
(a) get a timely fix that doesn't have other questions
|
|
or
|
|
(b) get reverted
|
|
|
|
* From `2021-09-20(2) <https://lore.kernel.org/all/CAHk-=wgOvmtRw1TNbMC1rn5YqyTKyn0hz+sc4k0DGNn++u9aYw@mail.gmail.com/>`_::
|
|
|
|
[...] review shouldn't hold up reported regressions of existing code. That's
|
|
just basic _testing_ - either the fix should be applied, or - if the fix is
|
|
too invasive or too ugly - the problematic source of the regression should
|
|
be reverted.
|
|
|
|
Review should be about new code, it shouldn't be holding up "there's a
|
|
bug report, here's the obvious fix".
|
|
|
|
* From `2023-05-08 <https://lore.kernel.org/all/CAHk-=wgzU8_dGn0Yg+DyX7ammTkDUCyEJ4C=NvnHRhxKWC7Wpw@mail.gmail.com/>`_::
|
|
|
|
If something doesn't even build, it should damn well be fixed ASAP.
|
|
|
|
On how fixing regressions with reverts can help prevent maintainer burnout
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* From `2026-01-28 <https://lore.kernel.org/all/CAHk-%3Dwi86AosXs66-yi54%2BmpQjPu0upxB8ZAfG%2BLsMyJmcuMSA@mail.gmail.com/>`_::
|
|
|
|
> So how can I/we make "immediate fixes" happen more often without
|
|
> contributing to maintainer burnout?
|
|
|
|
[...] the "revert and rethink" model [...] often a good idea in general [...]
|
|
|
|
Exactly so that maintainers don't get stressed out over having a pending
|
|
problem report that people keep pestering them about.
|
|
|
|
I think people are sometimes a bit too bought into whatever changes
|
|
they made, and reverting is seen as "too drastic", but I think it's
|
|
often the quick and easy solution for when there isn't some obvious
|
|
response to a regression report.
|
|
|
|
On mainlining fixes when the last -rc or a new release is close
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* From `2026-02-01 <https://lore.kernel.org/all/CAHk-%3DwhXTw1oPsa%2BTLuY1Rc9D1OAiPVOdR_-R2xG45kwDObKdA@mail.gmail.com/>`_::
|
|
|
|
So I think I'd rather see them hit rc8 (later today) and have a week
|
|
of testing in my tree and be reverted if they cause problems, than
|
|
have them go in after rc8 and then cause problems in the 6.19 release
|
|
instead.
|
|
|
|
* From `2023-04-20 <https://lore.kernel.org/all/CAHk-=wis_qQy4oDNynNKi5b7Qhosmxtoj1jxo5wmB6SRUwQUBQ@mail.gmail.com/>`_::
|
|
|
|
But something like this, where the regression was in the previous release
|
|
and it's just a clear fix with no semantic subtlety, I consider to be just a
|
|
regular regression that should be expedited - partly to make it into stable,
|
|
and partly to avoid having to put the fix into _another_ stable kernel.
|
|
|
|
On sending merge requests with just one fix
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* From `2024-04-24 <https://lore.kernel.org/all/CAHk-=wjy_ph9URuFt-pq+2AJ__p7gFDx=yzVSCsx16xAYvNw9g@mail.gmail.com/>`_::
|
|
|
|
If the issue is just that there's nothing else happening, I think people
|
|
should just point me to the patch and say "can you apply this single fix?"
|
|
|
|
* From `2023-04-20 <https://lore.kernel.org/all/CAHk-=wis_qQy4oDNynNKi5b7Qhosmxtoj1jxo5wmB6SRUwQUBQ@mail.gmail.com/>`_::
|
|
|
|
I'm always open to direct fixes when there is no controversy about the fix.
|
|
No problem. I still happily deal with individual patches.
|
|
|
|
On the importance of pointing to bug reports using Link:/Closes: tags
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* From `2025-07-29(1) <https://lore.kernel.org/all/CAHk-=wj2kJRPWx8B09AAtzj+_g+T6UBX11TP0ebs1WJdTtv=WQ@mail.gmail.com/>`_::
|
|
|
|
[...] revert like this, it really would be good to link to the problems, so
|
|
that when people try to re-enable it, they have the history for why it
|
|
didn't work the first time.
|
|
|
|
* From `2022-05-08 <https://lore.kernel.org/all/CAHk-=wjMmSZzMJ3Xnskdg4+GGz=5p5p+GSYyFBTh0f-DgvdBWg@mail.gmail.com/>`_::
|
|
|
|
So I have to once more complain [...]
|
|
|
|
[...] There's no link to the actual problem the patch fixes.
|
|
|
|
* From `2022-06-22 <https://lore.kernel.org/all/CAHk-=wjxzafG-=J8oT30s7upn4RhBs6TX-uVFZ5rME+L5_DoJA@mail.gmail.com/>`_::
|
|
|
|
See, *that* link [to the report] would have been useful in the commit.
|
|
|
|
On why the "no regressions" rule exists
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* From `2026-01-22 <https://lore.kernel.org/all/CAHk-=wheQNiW_WtHGO7bKkT7Uib-p+ai2JP9M+z+FYcZ6CAxYA@mail.gmail.com/>`_::
|
|
|
|
But the basic rule is: be so good about backwards compatibility that
|
|
users never have to worry about upgrading. They should absolutely feel
|
|
confident that any kernel-reported problem will either be solved, or
|
|
have an easy solution that is appropriate for *them* (ie a
|
|
non-technical user shouldn't be expected to be able to do a lot).
|
|
|
|
Because the last thing we want is people holding back from trying new
|
|
kernels.
|
|
|
|
* From `2024-05-28 <https://lore.kernel.org/all/CAHk-=wgtb7y-bEh7tPDvDWru7ZKQ8-KMjZ53Tsk37zsPPdwXbA@mail.gmail.com/>`_::
|
|
|
|
I introduced that "no regressions" rule something like two decades
|
|
ago, because people need to be able to update their kernel without
|
|
fear of something they relied on suddenly stopping to work.
|
|
|
|
* From `2018-08-03 <https://lore.kernel.org/all/CA+55aFwWZX=CXmWDTkDGb36kf12XmTehmQjbiMPCqCRG2hi9kw@mail.gmail.com/>`_::
|
|
|
|
The whole point of "we do not regress" is so that people can upgrade
|
|
the kernel and never have to worry about it.
|
|
|
|
[...]
|
|
|
|
Because the only thing that matters IS THE USER.
|
|
|
|
* From `2017-10-26(1) <https://lore.kernel.org/lkml/CA+55aFxW7NMAMvYhkvz1UPbUTUJewRt6Yb51QAx5RtrWOwjebg@mail.gmail.com/>`_::
|
|
|
|
If the kernel used to work for you, the rule is that it continues to work
|
|
for you.
|
|
|
|
[...]
|
|
|
|
People should basically always feel like they can update their kernel
|
|
and simply not have to worry about it.
|
|
|
|
I refuse to introduce "you can only update the kernel if you also
|
|
update that other program" kind of limitations. If the kernel used to
|
|
work for you, the rule is that it continues to work for you.
|
|
|
|
On exceptions to the "no regressions" rule
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* From `2026-01-22 <https://lore.kernel.org/all/CAHk-=wheQNiW_WtHGO7bKkT7Uib-p+ai2JP9M+z+FYcZ6CAxYA@mail.gmail.com/>`_::
|
|
|
|
There are _very_ few exceptions to that rule, the main one being "the
|
|
problem was a fundamental huge and gaping security issue and we *had* to
|
|
make that change, and we couldn't even make your limited use-case just
|
|
continue to work".
|
|
|
|
The other exception is "the problem was reported years after it was
|
|
introduced, and now most people rely on the new behavior".
|
|
|
|
[...]
|
|
|
|
Now, if it's one or two users and you can just get them to recompile,
|
|
that's one thing. Niche hardware and odd use-cases can sometimes be
|
|
solved that way, and regressions can sometimes be fixed by handholding
|
|
every single reporter if the reporter is willing and able to change
|
|
his or her workflow.
|
|
|
|
* From `2023-04-20 <https://lore.kernel.org/all/CAHk-=wis_qQy4oDNynNKi5b7Qhosmxtoj1jxo5wmB6SRUwQUBQ@mail.gmail.com/>`_::
|
|
|
|
And yes, I do consider "regression in an earlier release" to be a
|
|
regression that needs fixing.
|
|
|
|
There's obviously a time limit: if that "regression in an earlier
|
|
release" was a year or more ago, and just took forever for people to
|
|
notice, and it had semantic changes that now mean that fixing the
|
|
regression could cause a _new_ regression, then that can cause me to
|
|
go "Oh, now the new semantics are what we have to live with".
|
|
|
|
* From `2017-10-26(2) <https://lore.kernel.org/lkml/CA+55aFxW7NMAMvYhkvz1UPbUTUJewRt6Yb51QAx5RtrWOwjebg@mail.gmail.com/>`_::
|
|
|
|
There have been exceptions, but they are few and far between, and they
|
|
generally have some major and fundamental reasons for having happened,
|
|
that were basically entirely unavoidable, and people _tried_hard_ to
|
|
avoid them. Maybe we can't practically support the hardware any more
|
|
after it is decades old and nobody uses it with modern kernels any
|
|
more. Maybe there's a serious security issue with how we did things,
|
|
and people actually depended on that fundamentally broken model. Maybe
|
|
there was some fundamental other breakage that just _had_ to have a
|
|
flag day for very core and fundamental reasons.
|
|
|
|
On situations where updating something in userspace can resolve regressions
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* From `2018-08-03 <https://lore.kernel.org/all/CA+55aFwWZX=CXmWDTkDGb36kf12XmTehmQjbiMPCqCRG2hi9kw@mail.gmail.com/>`_::
|
|
|
|
And dammit, we upgrade the kernel ALL THE TIME without upgrading any
|
|
other programs at all. It is absolutely required, because flag-days
|
|
and dependencies are horribly bad.
|
|
|
|
And it is also required simply because I as a kernel developer do not
|
|
upgrade random other tools that I don't even care about as I develop the
|
|
kernel, and I want any of my users to feel safe doing the same time.
|
|
|
|
* From `2017-10-26(3) <https://lore.kernel.org/lkml/CA+55aFxW7NMAMvYhkvz1UPbUTUJewRt6Yb51QAx5RtrWOwjebg@mail.gmail.com/>`_::
|
|
|
|
But if something actually breaks, then the change must get fixed or
|
|
reverted. And it gets fixed in the *kernel*. Not by saying "well, fix your
|
|
user space then". It was a kernel change that exposed the problem, it needs
|
|
to be the kernel that corrects for it, because we have a "upgrade in place"
|
|
model. We don't have a "upgrade with new user space".
|
|
|
|
And I seriously will refuse to take code from people who do not understand
|
|
and honor this very simple rule.
|
|
|
|
This rule is also not going to change.
|
|
|
|
And yes, I realize that the kernel is "special" in this respect. I'm proud
|
|
of it.
|
|
|
|
* From `2017-10-26(4) <https://lore.kernel.org/all/CA+55aFwiiQYJ+YoLKCXjN_beDVfu38mg=Ggg5LFOcqHE8Qi7Zw@mail.gmail.com/>`_::
|
|
|
|
If you break existing user space setups THAT IS A REGRESSION.
|
|
|
|
It's not ok to say "but we'll fix the user space setup".
|
|
|
|
Really. NOT OK.
|
|
|
|
On what qualifies as userspace interface, ABI, API, documented interfaces, etc.
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* From `2026-01-20 <https://lore.kernel.org/all/CAHk-=wga8Qu0-OSE9VZbviq9GuqwhPhLUXeAt-S7_9+fMCLkKg@mail.gmail.com/>`_::
|
|
|
|
So I absolutely detest the whole notion of "ABI changes". It's a
|
|
meaningless concept, and I hate it with a passion, [...]
|
|
|
|
The Linux rule for regressions is basically based on the philosophical
|
|
question of "If a tree falls in the forest, and nobody is around to
|
|
hear it, does it make a sound?".
|
|
|
|
So the only thing that matters is if something breaks user-*conscious*
|
|
behavior.
|
|
|
|
And when that happens, the distinction between "bug fix" and "new
|
|
feature" and "ABI change" matters not one whit, and the change needs
|
|
to be done differently.
|
|
|
|
[...]
|
|
|
|
I just wanted to point out that the argument about whether it's an ABI
|
|
change or not is irrelevant. If it turns out that some program - not a test
|
|
script, but something with relevance to conscious user expectations ~
|
|
depended on the old broken behavior, then it needs to be done some other
|
|
way.
|
|
|
|
* From `2026-02-13 <https://lore.kernel.org/all/CAHk-=whY-N8kjm8kiFUV5Ei-8AuYw--EPGD-AR3Pd+5GTx2sAQ@mail.gmail.com/>`_::
|
|
|
|
> [...] this should not fall under the don't break user space rule [...]
|
|
|
|
Note that the rule is about breaking *users*, not breaking user space per
|
|
se. [...]
|
|
|
|
If some user setup breaks, things need fixing.
|
|
|
|
[...] but I want to make it very clear that there are no excuses about "user
|
|
space applications".
|
|
|
|
* From `2021-09-20(4) <https://lore.kernel.org/all/CAHk-=wi7DB2SJ-wngVvsJ7Ak2cM556Q8437sOXo4EJt2BWPdEg@mail.gmail.com/>`_::
|
|
|
|
[...] a regression is a bit like Schrödinger's cat - if nobody is around
|
|
to notice it and it doesn't actually affect any real workload, then you
|
|
can treat the regression as if it doesn't exist.
|
|
|
|
* From `2020-05-21 <https://lore.kernel.org/all/CAHk-=wiVi7mSrsMP=fLXQrXK_UimybW=ziLOwSzFTtoXUacWVQ@mail.gmail.com/>`_::
|
|
|
|
The rules about regressions have never been about any kind of documented
|
|
behavior, or where the code lives.
|
|
|
|
The rules about regressions are always about "breaks user workflow".
|
|
|
|
Users are literally the _only_ thing that matters.
|
|
|
|
* From `2019-09-15 <https://lore.kernel.org/lkml/CAHk-=wiP4K8DRJWsCo=20hn_6054xBamGKF2kPgUzpB5aMaofA@mail.gmail.com/>`_::
|
|
|
|
One _particularly_ last-minute revert is the top-most commit (ignoring
|
|
the version change itself) done just before the release, and while
|
|
it's very annoying, it's perhaps also instructive.
|
|
|
|
What's instructive about it is that I reverted a commit that wasn't
|
|
actually buggy. In fact, it was doing exactly what it set out to do,
|
|
and did it very well. In fact it did it _so_ well that the much
|
|
improved IO patterns it caused then ended up revealing a user-visible
|
|
regression due to a real bug in a completely unrelated area.
|
|
|
|
The actual details of that regression are not the reason I point that
|
|
revert out as instructive, though. It's more that it's an instructive
|
|
example of what counts as a regression, and what the whole "no
|
|
regressions" kernel rule means.
|
|
|
|
[...] The reverted commit didn't change any API's, and it didn't introduce
|
|
any new bugs. But it ended up exposing another problem, and as such caused
|
|
a kernel upgrade to fail for a user. So it got reverted.
|
|
|
|
The point here being that we revert based on user-reported _behavior_, not
|
|
based on some "it changes the ABI" or "it caused a bug" concept. The problem
|
|
was really pre-existing, and it just didn't happen to trigger before. [...]
|
|
|
|
Take-away from the whole thing: it's not about whether you change the
|
|
kernel-userspace ABI, or fix a bug, or about whether the old code
|
|
"should never have worked in the first place". It's about whether
|
|
something breaks existing users' workflow.
|
|
|
|
* From `2017-11-05 <https://lore.kernel.org/all/CA+55aFzUvbGjD8nQ-+3oiMBx14c_6zOj2n7KLN3UsJ-qsd4Dcw@mail.gmail.com/>`_::
|
|
|
|
And our regression rule has never been "behavior doesn't change".
|
|
That would mean that we could never make any changes at all.
|
|
|
|
* From `2020-05-21 <https://lore.kernel.org/all/CAHk-=wiVi7mSrsMP=fLXQrXK_UimybW=ziLOwSzFTtoXUacWVQ@mail.gmail.com/>`_::
|
|
|
|
No amount of "you shouldn't have used this" or "that behavior was
|
|
undefined, it's your own fault your app broke" or "that used to work
|
|
simply because of a kernel bug" is at all relevant.
|
|
|
|
* From `2021-05-21 <https://lore.kernel.org/all/CAHk-=wiVi7mSrsMP=fLXQrXK_UimybW=ziLOwSzFTtoXUacWVQ@mail.gmail.com/>`_::
|
|
|
|
But no, "that was documented to be broken" (whether it's because the code
|
|
was in staging or because the man-page said something else) is irrelevant.
|
|
If staging code is so useful that people end up using it, that means that
|
|
it's basically regular kernel code with a flag saying "please clean this
|
|
up".
|
|
|
|
[...]
|
|
|
|
The other side of the coin is that people who talk about "API stability" are
|
|
entirely wrong. API's don't matter either. You can make any changes to an
|
|
API you like - as long as nobody notices.
|
|
|
|
Again, the regression rule is not about documentation, not about API's, and
|
|
not about the phase of the moon.
|
|
|
|
* From `2012-07-06 <https://lore.kernel.org/all/CA+55aFwnLJ+0sjx92EGREGTWOx84wwKaraSzpTNJwPVV8edw8g@mail.gmail.com/>`_::
|
|
|
|
> Now this got me wondering if Debian _unstable_ actually qualifies as a
|
|
> standard distro userspace.
|
|
|
|
Oh, if the kernel breaks some standard user space, that counts. Tons
|
|
of people run Debian unstable
|
|
|
|
* From `2011-05-06 <https://lore.kernel.org/all/BANLkTi=KVXjKR82sqsz4gwjr+E0vtqCmvA@mail.gmail.com/>`_::
|
|
|
|
It's clearly NOT an internal tracepoint. By definition. It's being
|
|
used by powertop.
|
|
|
|
On regressions noticed by users or test-suites/CIs
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* From `2026-01-22 <https://lore.kernel.org/all/CAHk-=wheQNiW_WtHGO7bKkT7Uib-p+ai2JP9M+z+FYcZ6CAxYA@mail.gmail.com/>`_::
|
|
|
|
Users complaining is the only real line in the end.
|
|
|
|
[...] a test-suite complaining is then often a *very* good indication that
|
|
maybe users will hit some problem, and test suite issues should be taken
|
|
very seriously [...]
|
|
|
|
But a test-suite error isn't necessarily where you have to draw the
|
|
line - it's a big red flag [...]
|
|
|
|
* From `2024-29-01 <https://lore.kernel.org/all/CAHk-=wg8BrZEzjJ5kUyZzHPZmFqH6ooMN1gRBCofxxCfucgjaw@mail.gmail.com/>`_::
|
|
|
|
The "no regressions" rule is not about made-up "if I do this, behavior
|
|
changes".
|
|
|
|
The "no regressions" rule is about *users*.
|
|
|
|
If you have an actual user that has been doing insane things, and we
|
|
change something, and now the insane thing no longer works, at that
|
|
point it's a regression, and we'll sigh, and go "Users are insane" and
|
|
have to fix it.
|
|
|
|
But if you have some random test that now behaves differently, it's
|
|
not a regression. It's a *warning* sign, sure: tests are useful.
|
|
|
|
On accepting when a regression occurred
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* From `2026-01-22 <https://lore.kernel.org/all/CAHk-=wheQNiW_WtHGO7bKkT7Uib-p+ai2JP9M+z+FYcZ6CAxYA@mail.gmail.com/>`_::
|
|
|
|
But starting to argue about users reporting breaking changes is
|
|
basically the final line for me. I have a couple of people that I have
|
|
in my spam block-list and refuse to have anything to do with, and they
|
|
have generally been about exactly that.
|
|
|
|
Note how it's not about making mistakes and _causing_ the regression.
|
|
That's normal. That's development. But then arguing about it is a
|
|
no-no.
|
|
|
|
* From `2024-06-23 <https://lore.kernel.org/all/CAHk-=wi_KMO_rJ6OCr8mAWBRg-irziM=T9wxGC+J1VVoQb39gw@mail.gmail.com/>`_::
|
|
|
|
We don't introduce regressions and then blame others.
|
|
|
|
There's a very clear rule in kernel development: things that break
|
|
other things ARE NOT FIXES.
|
|
|
|
EVER.
|
|
|
|
They get reverted, or the thing they broke gets fixed.
|
|
|
|
* From `2021-06-05 <https://lore.kernel.org/all/CAHk-=wiUVqHN76YUwhkjZzwTdjMMJf_zN4+u7vEJjmEGh3recw@mail.gmail.com/>`_::
|
|
|
|
THERE ARE NO VALID ARGUMENTS FOR REGRESSIONS.
|
|
|
|
Honestly, security people need to understand that "not working" is not
|
|
a success case of security. It's a failure case.
|
|
|
|
Yes, "not working" may be secure. But security in that case is *pointless*.
|
|
|
|
* From `2017-10-26(5) <https://lore.kernel.org/lkml/CA+55aFwiiQYJ+YoLKCXjN_beDVfu38mg=Ggg5LFOcqHE8Qi7Zw@mail.gmail.com/>`_::
|
|
|
|
[...] when regressions *do* occur, we admit to them and fix them, instead of
|
|
blaming user space.
|
|
|
|
The fact that you have apparently been denying the regression now for
|
|
three weeks means that I will revert, and I will stop pulling apparmor
|
|
requests until the people involved understand how kernel development
|
|
is done.
|
|
|
|
On back-and-forth
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
* From `2024-05-28 <https://lore.kernel.org/all/CAHk-=wgtb7y-bEh7tPDvDWru7ZKQ8-KMjZ53Tsk37zsPPdwXbA@mail.gmail.com/>`_::
|
|
|
|
The "no regressions" rule is that we do not introduce NEW bugs.
|
|
|
|
It *literally* came about because we had an endless dance of "fix two
|
|
bugs, introduce one new one", and that then resulted in a system that
|
|
you cannot TRUST.
|
|
|
|
* From `2021-09-20(1) <https://lore.kernel.org/all/CAHk-=wi7DB2SJ-wngVvsJ7Ak2cM556Q8437sOXo4EJt2BWPdEg@mail.gmail.com/>`_::
|
|
|
|
And the thing that makes regressions special is that back when I
|
|
wasn't so strict about these things, we'd end up in endless "seesaw
|
|
situations" where somebody would fix something, it would break
|
|
something else, then that something else would break, and it would
|
|
never actually converge on anything reliable at all.
|
|
|
|
* From `2015-08-13 <https://lore.kernel.org/all/CA+55aFxk8-BsiKwr_S-c+4G6wihKPQVMLE34H9wOZpeua6W9+Q@mail.gmail.com/>`_::
|
|
|
|
The strict policy of no regressions actually originally started mainly wrt
|
|
suspend/resume issues, where the "fix one machine, break another" kind of
|
|
back-and-forth caused endless problems, and meant that we didn't actually
|
|
necessarily make any forward progress, just moving a problem around.
|
|
|
|
On changes with a risk of causing regressions
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* From `2023-06-02 <https://lore.kernel.org/all/CAHk-=wgyAGUMHmQM-5Eb556z5xiHZB7cF05qjrtUH4F7P-1rSA@mail.gmail.com/>`_::
|
|
|
|
So what I think you should do is to fix the bug right, with a clean
|
|
patch, and no crazy hacks. That is something we can then apply and
|
|
test. All the while knowing full well that "uhhuh, this is a visible
|
|
change, we may have to revert it".
|
|
|
|
If then some *real* load ends up showing a regression, we may just be
|
|
screwed. Our current behavior may be buggy, but we have the rule that
|
|
once user space depends on kernel bugs, they become features pretty
|
|
much by definition, however much we might dislike it.
|
|
|
|
On in-kernel workarounds to avoid regressions
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* From `2017-10-26(6) <https://lore.kernel.org/lkml/CA+55aFxW7NMAMvYhkvz1UPbUTUJewRt6Yb51QAx5RtrWOwjebg@mail.gmail.com/>`_::
|
|
|
|
Behavioral changes happen, and maybe we don't even support some
|
|
feature any more. There's a number of fields in /proc/<pid>/stat that
|
|
are printed out as zeroes, simply because they don't even *exist* in
|
|
the kernel any more, or because showing them was a mistake (typically
|
|
an information leak). But the numbers got replaced by zeroes, so that
|
|
the code that used to parse the fields still works. The user might not
|
|
see everything they used to see, and so behavior is clearly different,
|
|
but things still _work_, even if they might no longer show sensitive
|
|
(or no longer relevant) information.
|
|
|
|
On regressions caused by bugfixes
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* From `2018-08-03 <https://lore.kernel.org/all/CA+55aFwWZX=CXmWDTkDGb36kf12XmTehmQjbiMPCqCRG2hi9kw@mail.gmail.com/>`_::
|
|
|
|
> Kernel had a bug which has been fixed
|
|
|
|
That is *ENTIRELY* immaterial.
|
|
|
|
Guys, whether something was buggy or not DOES NOT MATTER.
|
|
|
|
[...]
|
|
|
|
It's basically saying "I took something that worked, and I broke it,
|
|
but now it's better". Do you not see how f*cking insane that statement
|
|
is?
|
|
|
|
On internal API changes
|
|
~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* From `2017-10-26(7) <https://lore.kernel.org/lkml/CA+55aFxW7NMAMvYhkvz1UPbUTUJewRt6Yb51QAx5RtrWOwjebg@mail.gmail.com/>`_::
|
|
|
|
We do API breakage _inside_ the kernel all the time. We will fix
|
|
internal problems by saying "you now need to do XYZ", but then it's
|
|
about internal kernel API's, and the people who do that then also
|
|
obviously have to fix up all the in-kernel users of that API. Nobody
|
|
can say "I now broke the API you used, and now _you_ need to fix it
|
|
up". Whoever broke something gets to fix it too.
|
|
|
|
On regressions only found after a long time
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* From `2024-03-28 <https://lore.kernel.org/all/CAHk-=wgFuoHpMk_Z_R3qMXVDgq0N1592+bABkyGjwwSL4zBtHA@mail.gmail.com/>`_::
|
|
|
|
I'm definitely not reverting a patch from almost a decade ago as a
|
|
regression.
|
|
|
|
If it took that long to find, it can't be that critical of a regression.
|
|
|
|
So yes, let's treat it as a regular bug.
|
|
|
|
On testing regressions fixes in linux-next
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* On `maintainers summit 2024 <https://lwn.net/Articles/990599/>`_::
|
|
|
|
So running fixes though linux-next is just a waste of time.
|
|
|
|
On a few other aspects related to regressions
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
* From `2025-07-29(2) <https://lore.kernel.org/all/CAHk-=wjj9DvOZtmTkoLtyfHmy5mNKy6q_96d9=4FUEDXre=cww@mail.gmail.com/>`_
|
|
[which `is not quite a regression, but a huge inconvenience <https://lore.kernel.org/all/CAHk-=wgO0Rx2LcYT4f75Xs46orbJ4JxO2jbAFQnVKDYAjV5HeQ@mail.gmail.com/>`_]::
|
|
|
|
I no longer have sound.
|
|
|
|
I also suspect that it's purely because "make oldconfig" doesn't work,
|
|
and probably turned off my old Intel HDA settings. Or something.
|
|
|
|
Renaming config parameters is *bad*. I've harped on the Kconfig phase
|
|
of the kernel build probably being our nastiest point, and a real pain
|
|
point to people getting involved with development simply because
|
|
building your own kernel can be so daunting with hundreds of fairly
|
|
esoteric questions.
|
|
|
|
..
|
|
end-of-content
|
|
..
|
|
This text is available under GPL-2.0+ or CC-BY-4.0, as stated at the top
|
|
of the file. If you want to distribute this text under CC-BY-4.0 only,
|
|
please use "The Linux kernel developers" for author attribution and link
|
|
this as source:
|
|
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/Documentation/process/handling-regressions.rst
|
|
..
|
|
Note: Only the content of this RST file as found in the Linux kernel sources
|
|
is available under CC-BY-4.0, as versions of this text that were processed
|
|
(for example by the kernel's build system) might contain content taken from
|
|
files which use a more restrictive license.
|