|
|
Subscribe / Log in / New account

A last look at the 4.4 stable series

By Jonathan Corbet
February 17, 2022
Linus Torvalds released the 4.4 kernel on January 10, 2016 and promptly left the building for the greener fields of 4.5. This kernel was finished from his point of view, but it was just beginning its life in the wider world, and became the first long-term-stable release to be supported for more than two years. Indeed, the 4.4 release became one of the longest-supported and most widely used releases in the history of the kernel project (so far); it was deployed in vast numbers of Android devices, among other places. The final 4.4 stable release took place on February 3, over six years after 4.4 was "finished"; it is time to take a look at what happened to 4.4 in its stable life.

There were 302 stable updates released for 4.4 over the 2,216 days of its supported life — approximately one release per week for the entire six years. Those releases added 18,974 non-merge changesets to that "stable" kernel (about 8.6 patches per day, every day). By virtue of that work, the 4.4 kernel grew by nearly 90,000 lines of code; 72 new source files were added during that time.

Contributing developers

The 4.4 stable series thus looks, in some ways, like another development cycle, but with even more patches. Some of the other numbers are larger as well; the fixes added to 4.4 were contributed by 3,528 developers over those six years, representing just under 500 different employers. Kernel developers may like adding new features but, in the end, almost all of them end up fixing bugs as well. The top bug fixers were:

Top bug fixes in 4.4.x
DeveloperChangesetsPct
Greg Kroah-Hartman 4192.2%
Eric Dumazet 3671.9%
Takashi Iwai 3451.8%
Arnd Bergmann 3361.8%
Johan Hovold 3271.7%
Dan Carpenter 2881.5%
Thomas Gleixner 1680.9%
Al Viro 1210.6%
Eric Biggers 1180.6%
Colin Ian King 1080.6%
Linus Torvalds920.5%
Geert Uytterhoeven 870.5%
Xin Long 860.5%
Jan Kara 840.4%
Nathan Chancellor 840.4%
Alan Stern 820.4%
Steven Rostedt (VMware) 820.4%
Hans de Goede 810.4%
Cong Wang 800.4%
Christophe JAILLET 790.4%

Note that most of Greg Kroah-Hartman's "fixes" are actually the 302 tags applied to mark each release, leaving 117 actual fixes. The developers involved say a lot about where the bugs show up; Eric Dumazet works in networking and Takashi Iwai is the sound maintainer, for example. Arnd Bergmann, instead, puts a lot of effort into fixing problems all over the kernel tree, as does Dan Carpenter. Johan Hovald works all over the driver tree with a focus on the USB subsystem. It is worth noting that even the most productive contributors of fixes were individually responsible for less than 2% of the total.

A bit of a different story comes out if one looks at testers and reviewers.

Test and review credits in 4.4.x
Tested-by
Guenter Roeck 753.7%
Pavel Machek 572.8%
Jon Hunter 552.7%
Linux Kernel Functional Testing 532.6%
Shuah Khan 502.4%
Andrey Konovalov 442.1%
Aaron Brown 442.1%
Andrew Bowers 381.9%
Dmitry Vyukov 351.7%
Arnaldo Carvalho de Melo 271.3%
Borislav Petkov 211.0%
Jason Self 170.8%
Stan Johnson 160.8%
Joe Lawrence 150.7%
Marc Zyngier 120.6%
Jon Masters 120.6%
Krishneil Singh 120.6%
Reviewed-by
Greg Kroah-Hartman 1122.1%
David Sterba 1092.1%
Christoph Hellwig 1072.0%
Alexey Makhalov 1001.9%
Matt Helsley 1001.9%
Bo Gan 1001.9%
Hannes Reinecke 801.5%
Johannes Thumshirn 721.4%
Borislav Petkov 701.3%
Jan Kara 701.3%
Christian König 591.1%
Nick Desaulniers 571.1%
Andrew Morton541.0%
Andy Shevchenko 541.0%
Ingo Molnar 521.0%
Juergen Gross 500.9%
Eric Dumazet 480.9%

Only 1,527 patches applied to 4.4 contained Tested-by tags — that is just 8% of the total. That seems a bit surprising, given that each of those patches is meant to be a fix, so testing whether it works should be relatively straightforward.

The first few lines of the Reviewed-by column are not particularly surprising; both Kroah-Hartman and Christoph Hellwig do a lot of reviews in general, and David Sterba is the Btrfs maintainer. The next few names, Alexey Makhalov, Matt Helsley, and Bo Gan, are a bit more surprising, though; Makhalov and Helsley only have one directly authored patch each in the kernel, while Gan has none. In all three cases, digging through the logs shows a flurry of activity in mid-2018; these three developers, as it turns out, played a big role in the backporting of the Meltdown and Spectre fixes to the 4.4 kernel.

Patch review and selection

There were 4,101 patches applied to 4.4 that contained at least one Reviewed-by tag; that is 22% of the total. Compare that to the 37% of patches going into 5.16 with such tags. One might conclude that patches going into the stable kernels are getting less review than they should, but it is also likely that we are seeing the growth in the use of Reviewed-by tags over time. The fact that only 19% of the patches going into 4.5 had Reviewed-by tags would tend to back up that hypothesis.

How are the bugs fixed in the stable updates found? One clue can be found in the Reported-by tags used to credit bug reporters; 3,529 commits in 4.4.x contained such tags, with the most active reporters being:

Top bug reporters in 4.4.x
ReporterReportsPct
Syzbot68417.1%
Dmitry Vyukov 1463.7%
Hulk Robot 1453.6%
kernel test robot 882.2%
Andrey Konovalov 852.1%
Dan Carpenter 691.7%
Ben Hutchings 391.0%
Jann Horn 310.8%
kbuild test robot 300.8%
Guenter Roeck 230.6%
Al Viro 200.5%
Wen Xu 180.5%
Linus Torvalds160.4%
Jianlin Shi 160.4%
Geert Uytterhoeven 140.4%
Julien Grall 140.4%
Eric Dumazet 130.3%
Tetsuo Handa 130.3%
Eric Biggers 130.3%
Alexander Potapenko 130.3%

Dmitry Vyukov is the developer behind Syzbot, so the first two lines could properly be combined, showing that one developer is responsible for nearly 21% of the credited bug reports leading to 4.4.x fixes — an impressive total. Other automated testing systems added another 6.6% of the reports. Some of the other top reporters are almost certainly using tools of their own to seek out bugs. Every one of these bugs is a problem that was fixed before it was encountered by users, which can only be a good thing.

Also on the topic of tags: maintainers add stable@vger.kernel.org to a patch's CC list to mark a patch as being suitable for stable-kernel updates. Over the course of 4.4.x, 3446 patches (a bit over 18% of the total) were marked in this way. Obviously, the CC list is not the mechanism by which most patches get into the stable updates. In some subsystems (networking in particular), the maintainers manage a separate queue of stable-bound patches and actively discourage developers from marking patches themselves.

Most of the time, though, the patches are being picked by the stable-kernel maintainers themselves, either by hand or through the use of a machine-learning system. This process is frequently controversial. The Fixes: tag is often thought to be the indicator used by the stable team to pick patches that have not been explicitly marked for stable updates. The 4.4.x series included 7,629 patches with such tags, which is still only 40% of the total, so that tag is not a strong indicator either. The stable team is selecting patches that look like fixes even in the lack of any explicit markings.

Regressions and overall conclusion

One interesting use for Fixes: tags, though, is to see whether they refer to other patches that had been included in previous stable releases. In other words, is a patch with a Fixes: tag fixing a bug that was introduced in the stable series itself? Each such occurrence would indicate a regression shipped in a stable update, which is exactly what the stable kernels are meant to avoid.

Over the course of the 4.4 stable series, 1,309 patches contained Fixes: tags referring to commits appearing earlier in the stable series. Of those, though, 310 fixed patches that had been merged for the same stable update; those bugs never made it through to a release, and thus should not be counted as regressions. Some patches required multiple fixes and should not be counted twice; filtering those out leaves 884 patches — 4.7% of the total — that added regressions to the stable updates. Many of these regressions were likely never noticed by users, of course, but a few of them were serious.

Through all of this, the 4.4 kernels drove a huge number of devices. It was an allowed kernel version for the Android 7 through 9 releases, and is, without doubt, still running on a lot of devices despite the end of ongoing support. Many millions of people have benefited from the work that the stable-kernel maintainers (and all of the people who have helped them) have done. Assigning a dollar value to this work would be difficult, but the resulting number would have to be huge; it is a significant gift to the world as a whole.

The free-software community has often shown that it is better at cranking out software than supporting that software over long periods of time; the latter task often falls to providers who expect to be paid for access to their work. The 4.4.x kernel has shown, though, that the kernel community is, when it sets its mind to the task, indeed able to provide support for a full six years. The stable team's approach to picking patches is controversial, and probably will always be regardless of how the policy evolves, but the results were clearly good enough to build an extended ecosystem around. It is hard to conclude that this effort was anything but a significant success.

Index entries for this article
KernelDevelopment model/Stable tree
KernelReleases/4.4


to post comments

A last look at the 4.4 stable series

Posted Feb 18, 2022 16:54 UTC (Fri) by BenHutchings (subscriber, #37955) [Link] (3 responses)

> and became the first long-term-stable release to be supported for more than two years

This is not correct; 2.6.32, 3.2, 3.10, and 3.16 were also supported for 4-6 years. This was the first stable branch that Greg maintained for this long though.

I stand corrected

Posted Feb 18, 2022 21:05 UTC (Fri) by corbet (editor, #1) [Link] (2 responses)

You are right; somehow those efforts slipped my mind. My apologies, that was a significant community-support effort that deserves to be recognized.

I stand corrected

Posted Feb 21, 2022 13:09 UTC (Mon) by wtarreau (subscriber, #51152) [Link] (1 responses)

At least I think Ben and I will both agree that Greg's 4.4 has been of higher quality for users than the kernels we used to maintain ourselves. First it was released way more often, which eases reviewing and bisecting. Second, by being "official" (ours used to appear as "extended LTS") it was likely much more regarded by the entire community as a kernel to care about in backports. While Ben and I were often on our own when trying to backport some fixes to these older kernels, I observed more efforts generally speaking on 4.4 and the subsequent ones, which is great because it indicates that long-term stability is becoming something imporrtant for many developers. For me the current cycle is perfect, and the proof is that I no longer have to maintain one myself ;-) Big thanks to Greg for this!

I stand corrected

Posted Feb 21, 2022 21:29 UTC (Mon) by BenHutchings (subscriber, #37955) [Link]

Yes, I agree with all of that. I'm much happier being a contributor to the newer LTS branches than being a maintainer.

A last look at the 4.4 stable series

Posted Feb 21, 2022 13:11 UTC (Mon) by jmclnx (guest, #72456) [Link] (1 responses)

As a user of 4.4 at home until it went EOL, I think the concept of these long use kernels are nice, plus I never had issues with it.

Now on 5.15 at home, I hope it has the same stability as 4.4 had.

A last look at the 4.4 stable series

Posted Feb 21, 2022 13:31 UTC (Mon) by wtarreau (subscriber, #51152) [Link]

What's awesome with reasonably long lifes like this is that you can adopt them early on non-critical machines and progressively deploy them on more sensitive machines as time passes and your trust grows. For example at work we're using them in our appliances which require an extreme reliability. LTS kernels are really excellent after 6mo-1yr. In the past it was too late to adopt them for end-user products. Now I can use them on my laptop for 1yr, then we use them in our products for 3 years, and there are still 2 years left to cover different migration start times, possibly extended lives in field, etc. That's the Linux kernel I had been dreaming of since 2.4 when I created the hotfix branch ;-)

A last look at the 4.4 stable series

Posted Feb 28, 2022 15:46 UTC (Mon) by moorray (subscriber, #54145) [Link] (1 responses)

> In some subsystems (networking in particular), the maintainers manage a separate queue of stable-bound patches

FWIW that's no longer true. The special rules were dropped last March - commit dbbe7c962c3a ("docs: networking: drop special stable handling")

Networking and stable

Posted Feb 28, 2022 15:51 UTC (Mon) by corbet (editor, #1) [Link]

Interesting, I had completely missed that. That's what happens, I guess, when documentation patches by pass the docs maintainer :) Apologies for the confusion.


Copyright © 2022, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds