[MAINTAINERS SUMMIT] Satisfied with the time it takes regressions to be fixed?

Thorsten Leemhuis <[email protected]> Wed, 22 Jul 2026 17:27:37 +0200
Newsgroups dev.linux.lists.ksummit
Message-ID <[email protected]>
Linus' rule of thumb with regards to fixing regressions that have a
known culprit and were reported by a user afaics is: "within a week,
preferably before the next rc". He wrote that in January, for the exact
words and links to the full mails on lore from January see:
https://www.kernel.org/doc/html/latest/process/handling-regressions.html#on-how-quickly-regressions-should-be-fixed


I got the impression that most regressions I track take much longer to
get fixed. Which turned out to be the case when looked closer at a
recent development cycle, as more that half took more then two weeks to
get fixed; the analysis furthermore showed that fixes had usually been
available quickly, it just took them some time to get reviewed,
committed, and sent to Linus -- among others due to lack of maintainer
resources. More details on that below, let me first propose what we
might want to discuss the following here and later at the summit:


Is Linus asking too much here? If not, what can we do to improve the
time it typically takes to fix regressions -- without causing more
trouble for already overloaded maintainers?


Back to the analyses briefly mentioned above, which is based on a closer
look at 39 regressions I tracked during the 7.1 cycle that were reported
against either 7.1-rc or 7.0.

First I looked at how long it took to resolve those regressions once at
least a rough fix was known; the latter usually was the case right with
the report, as many stated that a revert helped. For 4 of the 39
regressions I tracked, a proper fix hit the next -rc that followed;
fixes for 8 in total (this thus included the 4 from before) hit mainline
within a week. 14 in total reached the second -rc within two weeks; 18
in total reached mainline within two weeks. The overall median time was
20 days; in 19 cases it took more than three weeks till a fix hit a -rc,
in 5 of those even more than five weeks.

Then I looked at how long it had taken the committed fixes for those 39
regressions from submission for review till hitting mainline: 6 of the
fixes managed to reach the first -rc within a week of the submission,
and 12 in total reached mainline within a week. 15 in total reached the
second -rc and 20 in total hit mainline in two weeks. The median was 18
days; 14 fixes took more than three weeks from the submission till
hitting a mainline -rc.

Occasionally it took longer than Linus' rule of thumb due to cases like
"mistakes happen" or "subsystem with single maintainer temporarily busy
or unavailable". There were also a few cases where things were delayed
by "developer/maintainer tried hard to avoid a revert". But the main
reason why it often took longer than one or two weeks, afaics, lies
somewhere else: only some subsystems regularly manage to review, commit,
and mainline regression fixes within a week. This assessment is based
less on the analyzed time frame and more on what I've seen in the last
two or three years of tracking regressions.

Quick reminder for those that might not have been aware of Linus' rule
of thumb mentioned initially: I brought "time it takes to fix
regressions" up two and four years ago at the maintainers summit (and
each time before that on this list). That two years ago led to a
reworked "Expectations and best practices for fixing regressions"
section in Documentation/process/handling-regressions.rst. What's
outlined there is somewhat similar to what Linus' expects -- albeit it's
a bit more nuanced and even a little laxer in some cases:
https://www.kernel.org/doc/html/latest/process/handling-regressions.html#expectations-and-best-practices-for-fixing-regressions


Also be aware that my tracking (and thus the numbers here) only cover a
subset of regressions. Among others, because I never become aware of
some and focus on those users reported. So more than the 39 regressions
got fixed during that timeframe, some of which might have been fixed
quicker. At the same time, me prodding maintainers in a few cases
prevented some regressions from taking even longer to get fixed.

With that out of the way back to the "only some subsystems regularly
manage to [...] mainline regression fixes within a week" aspect.
Mistakes occasionally happen in those that as well; but their
maintainers overall handle regressions better by doing the following
things (in order of importance based on subsystems where things don't
work that well from what I've seen over the years):

* They have the motivation and the resources (aka time) to handle
regressions well; the latter is apparently usually thanks to an employer
backing fully those efforts and/or by spreading the load among enough
maintainers.

* They regularly send all committed fixes to Linus shortly before a new
-rc, e.g., between Friday and Sunday -- even if that means sending a
second PR in a week (if all subsystems did that, the numbers above would
look quite a bit better).

* They review and commit regression fixes quickly, e.g., usually within
two or three workdays.

* They submit and apply reverts if no proper fix gets into reach within
a few days, e.g., usually within something like two or three workdays.

* Those that have them ensure all their downstream maintainers handle
regressions and fixes for them well (e.g. like outlined here, esp. the
three points above), too -- and step in to handle things themselves when
their downstream maintainers temporarily or generally are unable to do
so (for example due to a lack of resources -- which from what I see in
my tracking efforts is the case in a few popular sub-subsystems that
frequently show up on my radar due to unfixed regressions).

* They have multiple maintainers and are thus responsive, even if some
of them are unavailable due to vacation or something.

* If they have internal QA queues, it usually takes them no more than
about a day or two to chew on regression fixes.

* They ensure their developers handle regressions like Linus wants them
to be handled -- and when they fail to do that, step in to handle things
themselves.

* They enforce tags like "current" and "next" in the subject of patch
submissions for their subsystem; this forces developers to think about
where patches should head to, while also allowing reviewers and
maintainers to easily filter regression fixes to prioritize them over
feature work.

* They maintain separate -fixes and -next branches that are in
linux-next independently; they furthermore send "your patch was applied
to <branch>" mails when patches are applied. That way everyone
(developers, me, affected users, ...) can easily check the status and
speak up when a fix is on the wrong track or suddenly becomes more urgent.

* They expedite fixing regressions that affect a lot of people, for
example if the culprit made it to a proper (non-rc) mainline release or
to a stable-series through a backport. Linus to directly pick up a fix
directly from the list is one way to do that.

* They do not put an unnecessary burden on reporters (I see it more
often these days that developers or maintainers ask reporters to submit
reverts or improve POC regression fixes, even if the person has never or
rarely contributed to the kernel before and in no way indicated any
interest in getting their name into the kernel history).

* They generally prioritize dealing with reports about regression and
fixes over other kernel work.

* They know the lesser-known aspects about handling regression fixes,
for example, that -next can often be skipped or that most fixes for
recent regression (e.g., introduced in a recent or the current cycle)
are fine to mainline even post -rc7. Note, be aware of the "usually" and
"most" above, as that in the end needs to be a case by case decision
depending on the risk of the particular change.


I tried to keep things generic and mostly positive up to this point, but
sometimes concrete examples are helpful to properly understand problem
points. So here are the commit-ids of a few, all of them from the
analyzed 7.1 cycle introduced in either 7.1 or 7.0 (note, some commits
are in this list multiple times; getting the full picture sometimes also
requires following Link: tags or a search on lore):

* Fixes for regressions that could have been fixed way earlier by opting
for a revert: 2914709c914101 f78073e84c80 7495adaa0e45e1 f23bf992d65a42

* Fixes that took more than a week to get committed: 629279e2e798cd
2914709c914101 2eeb342aff6647 ed831e7ea1a860 c0c6ccd9828c3a
522567362b6340 f78073e84c80 4867cef03b58ca 71f42b2149a1 ec78a85d95e9c3
5772f6535227eb

* Fixes that took more than 9 days from committing till reaching -rc:
a39f0ce0c9da20 426e5846eba75f 635b5c6622f317 629279e2e798cd
e3ac0d9f1a205f 54cf41c969da66 5629eec1a28298 12f58a6caad3be
e4e9b7b38d5db2 c0c6ccd9828c3a 63d2059cd665c4 a8878e19d2f520 71f42b2149a1
7495adaa0e45e1 f23bf992d65a42 754d60ad1c9189

* Fixes that were delayed because they first were scheduled to be merged
in the next merge window by accident or by not thinking about it:
2914709c914101 593889c4014260

* Fixes that missed the 7.1 release where the regression could have
easily been fixed already by 7.1-rc7: a39f0ce0c9da20 426e5846eba75f
635b5c6622f317 12f58a6caad3be 7495adaa0e45e1

* Fixes for regressions that affected many users but nevertheless took
some time to fix despite available fixes: 12f58a6caad3be e3ac0d9f1a205f

As mentioned earlier, in some cases I prodded developers or maintainers,
otherwise it would have taken some even longer to get the regressions
fixed. Occasionally it works and I sometimes even get a "thanks" for
that. Most often is does not, among others because I get answers along
the lines of "this can wait till the end of the development cycle" (even
for regressions that made it into a stable release), "you are asking too
much here", "please leave us alone, we handle this already the best we
can". Sometimes I then point to to the "Expectations and best practices
for fixing regressions" or the rule of thumb from Linus initially
mentioned -- often without much luck. Which is why I think it might be
worth discussing this again on the summit.

Ciao, Thorsten

P.S.: Here is the table I used to generate the numbers:
https://docs.google.com/spreadsheets/d/1lp5bgLf8T4TRcAVqUmRviIAWxol8tQFUQ963HS0xscw/edit?usp=sharing