New Linux Kernel 4.8 — Plus a Kernel-Killing Bug

405

After nearly exactly two months, Linus Torvalds released kernel 4.8 into the wild on Sunday, October 2nd. Torvalds dubbed 4.8 Psychotic Stoned Sheep, probably inspired by the news that a flock of woolly ruminants ate some abandoned cannabis and, high as kites, run amok in rural Wales, striking terror into the hearts of the locals.

This has been one of the larger releases, with many patches being sent in before the first release candidate was published. However, Torvalds attributes many of the changes to the switch to a new documentation format — instead of using the DocBook, documentation must now be submitted in the Sphinx doc format.

But, apart from the shift in documentation formats, there are, of course, a slew of changes to look forward to in this release. And, although Torvalds repeatedly insisted that there was “nothing very scary” in most of his release candidate updates, some of the changes were pretty big.

Take, for example, the new improvements to open source video card drivers: AMD GPUs can now be overclocked using the free AMDGPU driver, and the kernel now supports mode-setting for the new Nvidia Pascal cards via the free Nouveau driver.

Another big change in kernel 4.8 is support for Raspberry Pi 3’s BCM2835 SoC. Up until now, Linux kernels had to be patched to work on the latest version of the Raspberry Pi. Debian did the patching themselves, hence Raspbian. Now, with support integrated natively into the Linux kernel, any distribution can be made to run on the Pi with rather easily, heavy graphic interfaces notwithstanding.

Maybe a less noticeable change, but that has real-world implications for end users, is the integration of FQ/codel with the mac80211 internal software queues. This may sound very esoteric, but it is the first step to solving a serious WiFi shortcoming that has dogged Linux wireless networks for years.

Known as the ath9k crypto fq bug, the issue is a side effect of the design of the 802.11 protocol and affects most Atheros-based network cards. What happens is this: If a transmitting “station” on the wireless network is slow, say running at 1 Mbps, while the rest transmit at 10 Mbps, the speed on all the network will gradually degrade and slow down to the speed (or lack thereof) of the slowest station. The integration of the FQ/codel with the mac80211 internal software queues is the way forward to finally resolving this problem.

Kernel Killing Bug

… At least that is what should have happened. But on the October 4, Torvalds sent a message to the kernel mailing list warning of a “kernel killing” bug in code submitted by Andrew Morton. Morton was trying to squash a minor bug, but his solution was apparently worse than the issue it was trying to solve. What made the problem catastrophic is that Morton submitted the patch including the dreaded BUG_ON() debugging function. The BUG_ON() function is triggered when something really bad happens in your code and it shuts down the process. Unfortunately, in this case, it also kills the kernel, forcing the machine to reboot.

Torvalds was annoyed with Morton, telling him to “please stop taking those kinds of patches!” However, he was also annoyed with the way the debugging mechanism itself, making him wonder if it was not worth removing “the idiotic BUG_ON() concept once and for all.

The distros that decide to run with the 4.8 kernel should only do so once the defective code is patched. And, at the moment of writing, Johannes Weiner is already working on the solution.

Also new in 4.8:

Michael Larabel at Phoronix has an extensive breakdown of all that’s new in 4.8.