Der neue Kernel 5.8-rc1 ist der wohl umfangreichste bislang. Er schützt den Kernelspace besser vor problematischen eBPF-Programmen, beschleunigt SELinux, kämpft gegen eine weitere Hardwarelücke von Intel und liefert WPA3-Updates für drei ältere WLAN-Treiber.
Als einen der größten, wenn nicht gar den größten Release in der Kernel-Geschichte bezeichnete Linus Torvalds die erste Version von Kernel 5.8. Denn vergleichbare Kernel-Versionen in der Vergangenheit waren mitunter künstlich aufgeblasen: In Kernel 4.9 steckte das neue Greybus-Subsystem, zudem war die vorherige Reihe an Release Candidates länger. Kernel 4.12 wiederum brachte die meisten Codezeilen mit, weil sich haufenweise Register-Beschreibungen für AMD-GPU-Treiber drin wiederfanden.
In Kernel 5.8 stecke hingegen schlicht eine Menge an Entwicklungszeit und die Neuerungen seien über alle Bereiche verteilt. Ein Champion unter den Kerneln sei 5.8 nicht nur wegen der Zahl an Commits und neuen Zeilen, sondern auch wegen der vielen geänderten Zeilen. Diese verteilen sich ebenfalls über alle Bereiche und stellen laut Torvalds einen Rekord auf. Kurzum: Kernel 5.8-rc1 ist riesig.
Schutz vor Kernel-Sonden
Neu ist unter anderem die Möglichkeit, Schutzzonen für bestimmten Kernelcode zu markieren. Hintergrund ist, dass einige eBPF-Tools über die kernelinterne virtuelle Maschine auf Kprobes und andere sogenannte Kernelsonden zugreifen. Diese Probes sind im Kernelspace verankert und sammeln dort Daten. Einige Entwickler befürchten allerdings, dass beim so genannten Instrumentieren Probleme entstehen, wenn Kprobes und Co. auf „anfälligen“ oder gar „gefährlichen“ Code treffen.
Ein generischer „.noinstr.text“-Ansatz zusammen mit einem „noinstr“-Marker für Funktionen soll diese Instrumentierung nun von bestimmten Codebereichen fernhalten — und damit indirekt auch eBPF-Tools. Die Funktionen „instrumentation_begin()“ und „instrumentation_end()“ erlauben es zugleich, für einen bestimmten Bereich im Code eine Instrumentierung zu erlauben.
Neuer eBPF-Ringpuffer
Doch auch in Sachen eBPF gibt es Bewegung: Die Entwickler führen einen neuen Ringpuffer ein, der als Alternative zu Perf Buffer einspringt und letzterem in der Semantik ähnelt. Im Gegensatz zu Perf Buffer erlaube es der neue Puffer allerdings auch, dieselbe Instanz eines Ring-Puffers effizient zwischen verschiedenen CPUs zu teilen.
Andere Änderungen im Threads-Bereich ermöglichen es, „pidfds“ mit Namespaces von Prozessen zu verknüpfen. Diese lassen sich zum Beispiel als erstes Argument dem „setns()“-Syscall mit auf den Weg geben. Das reduziere nicht nur die Zahl der Syscalls, um alle verfügbaren Namespaces zu bündeln, sondern erlaube auch atomare „setns()“-Aufrufe für ein Subset von Namespaces, schreibt Entwickler Christian Brauner. Das Feature reduziert so die Komplexität im Umgang mit Containern ein Stück weiter.
In Sachen Sicherheit gibt es Performance-Updates für SELinux, für die Optimierungen der internen Datenstrukturen den Ausschlag geben. Zugleich würden die Änderungen den Code vereinfachen, schreibt Paul Moore. Auch am Fehlerbehandlungs-Code gibt es Updates.
Das Lockdown-Feature steckt noch nicht lange im Kernel und erlaubt es zum Beispiel in Enterprise-Umgebungen, die Zugriffe auf bestimmte Kernelschnittstellen zu verbieten. Dank der jüngsten Änderungen von James Morris dürfen auch unprivilegierte Anwender den Status des Lockdown-Features sehen.
Proc-Bugs
Im Pseudodateisystem „/proc“ reparierte Eric Biederman einen Fehler, der offenbar schon sehr lange dort schlummerte. Syzbot habe diesen Fehler „zu seiner Überraschung“ gefunden. Auch an weiteren Stellen in „/proc“ brachte Biederman Reparaturen an. Für den Device Mapper meldete indes Mike Snitzer Änderungen. Die größte sie die neue Möglichkeit, reguläre Blockgeräte besser mit Zoned Devices zu kombinieren, um dabei Performance-Einbrüche abzumildern.
Für das Flash-Dateisystem F2FS berichtet Jaegeuk Kim von Optimierungen am Kompressions-Feature: So unterstützt F2FS nun den „lzo-rle“-Algorithmus. Zudem wurde die Testumgebung gehärtet. Auch Bugs am Dateisystem, die auf Android zum Tragen kamen, haben die Entwickler behoben. Auch David Sterba vermeldet Highlights für Btrfs: So klappe die „Dead Root Detection“ nun schneller, die nötig zu sein scheint, um gelöschte Subvolumes aufzuräumen. Ein neuer Suchalgorithmus gehe die Sache schneller an.
Auch für das Linux Persistent Storage Filesystem, kurz “pstore”, kündigen sich Aktualisierungen an. Neuerdings lassen sich auch Blockgeräte als „pstore“-Backends verwenden. Damit wird ein bereits länger bestehender Wunsch Wirklichkeit. Einher mit der Änderung gehen einige grundsätzliche Code-Umbauten.
Besser aufwachen
Die Power-Management-Updates von Rafael Wysocki erleichtern das Umschalten des „cpuidle“-Governors zur Laufzeit, unabhängig von der Kernelkonfiguration. Sie verbessern den Code für den Umgang mit Geräten, die aus dem Userspace-Ruhezustand aufwachen. Zudem überarbeiten sie die systemweiten Treiber-Flags für das Power Management, die sich nun einfacher handhaben lassen.
Weitere Änderungen gibt es an der Input-output Memory Management Unit (IOMMU). Die von Joerg Roedel eingereichten Patches ändern die Weise, wie Geräte mit der IOMMU kommunizieren. Anstelle von „add_device()“ und „remove_device()“ kommen nun die Funktionen „probe_device()“ und „release_device()“ zum Einsatz. In diesem Zug ist Code, der vorher in den IOMMU-Treibern steckte in den Kerncode von IOMMU gewandert.
Im GPIO-Bereich wurde ein Aggregator-Treiber in den Linux-Kernel eingepflegt. Der vereint ausgewählte GPIO-Leitungen und erlaubt es auf diesem Wege, Geräte mit Restriktionen zu belegen. Prozesse erhalten dann nur Zugriff auf bestimmte Leitungen, was die Sicherheit stärkt und vor allem im industriellen Umfeld interessant sein dürfte. Ein weiterer Anwendungsfall besteht darin, nur bestimmte Leitungen für virtuelle Maschinen und Container zur Verfügung zu stellen.
Subtile Unterschiede
Steppings sind unterschiedliche Vertreter des gleichen Prozessortyps, die sich — anders als neue Prozessortypen — oft kaum vom Vorgänger unterscheiden. Steppings gibt es etwa von Intel für die x86-Architektur. Von ihnen kann Ingo Molnar ein Lied singen. Er musste in diesem Releasezyklus die x86-Familie und Model-Makros um Steppings erweitern: „…weil das x86-Leben nicht komplex genug ist und Intel Steppings verwendet, um verschiedenen CPUs voneinander zu unterscheiden.“ Doch wofür das Ganze?
Ganz klar: Für eine Hardware-Lücke in Intel-CPUs. Die hängt diesmal mit einem Feature namens Special Register Buffer Data Sampling (SRBDS) zusammen und ermöglicht ein Side-Channel-Leak im Stil von Meltdown und Spectre. Laut Thomas Gleixner erlaubt sie es, Bits des Zufallsgenerators über Kerne und Threads hinweg zu leaken. Gegenmaßnahmen erfordern den „üblichen Haufen unschöner Zutaten“, schreibt Gleixner. Hier wird dann auch klar, wozu der eben erwähnte Stepping-Support nötig ist: Die Schutzmaßnahmen müssen unter anderem die CPU-Modelle und Steppings von Intel identifizieren, was den beschriebenen Stepping-Match-Support erfordert. Natürlich verlangsamen die gewählten Schritte auch die Intel-CPUs einmal mehr, wenn die Schutzmechanismen denn zum Einsatz kommen.
RISC-V und ARM
Für RISC-V gibt es ebenfalls Neuerungen. Die betreffen Support für Kendryte K210, einen RISC-V-basierten Edge-Computing-Chip. Für diesen liefern die Linux-Entwickler nun den fehlenden Code nach. Und eine Möglichkeit, Device Trees im Kernel abzubilden, da der K210 keinen Bootloader hat, der einen Device Tree anbietet.
ARM-Entwickler Arnd Bergmann kündigt Support für fünf neue Arm-SoCs an. Dabei handelt es sich um drei Realtek-SoCs, RTD1195, RTD1395 und RTD1619, die in NAS-Geräten und Set-Top-Boxen zum Einsatz kommen. Außerdem gibt es Support für den Renesas RZ/G1H („r8a7742“) sowie den Rockchip RK3326. Außerdem gibt es Support für zahlreiche neue Maschinen, die auf bereits unterstützten SoCs basieren. Dazu zählen unter anderem TV-Boxen, Single Board Computer und ein Router.
Neues WPA3 in alten Treibern
Für Benutzer der bereits etwas älteren WLAN-Treiber „rt2800“, „b43“ und „b43_legacy“ gibt es gute Nachrichten: alle drei bringen laut Kalle Valo seit Kernel 5.8 Support für WPA3 mit. Die Treiber „ath9k“ und „ath9k_htc“ dürfen neuerdings zudem Broadcast Action Frames empfangen, was insbesondere im Mesh-Bereich von Interesse ist. Auch für Thunderbolt-Schnittstellen gibt es Neuigkeiten. Der Kernel unterstützt jetzt Intels Tiger-Lake-Thunderbolt-Controller. Dabei kümmert sich eine Firmware-basierte Software um die Verbindungen. Zugleich lässt sich der Treiber auch für andere Plattformen als x86 bauen.
Auch für Nutzer von Linux-Desktops bringt der Kernel mindestens eine nützliche Änderung mit. Die betrifft Benachrichtigungen über Schlüssel und den Schlüsselspeicher und behebt ein Problem von „gnome-online-accounts“. Bislang ließen sich Schlüsselspeicher im Kernel nicht asynchron beobachten. Stattdessen musste der Desktop dort aktiv regelmäßig nachfragen. Kernel 5.8 führt Keyring-Benachrichtigungen ein, wobei die Benachrichtigungs-Warteschlange auf einer Standard-Pipe basiert, die eine spezielle Flag mitbringt: „pipe2(fds, O_NOTIFICATION_PIPE)“.
Updates für Intel- und AMD-Grafik
Natürlich gibt es, wie in jeder neuen Kernelversion, auch wieder Änderungen an der Grafik. So haben die Entwickler den Kern des Direct Rendering Manager (DRM) umgebaut, um Treiber zu vereinfachen. Es gibt Support für Intels Tigerlake-Plattform. Der AMDGPU-Treiber unterstützt neuerdings Peer-to-Peer-basiertes PCI-Buffer-Sharing und das Verschlüsseln von GPU-Speicher. Außerdem informieren die DRM-Konnektoren nun den Userspace mithilfe von Sysfs über Hotplug Events, wenn die User also bestimmte Geräte anstöpseln.
Wer der Vorabkernel testen möchte, findet diesen wie gewohnt auf Kernel.org oder auf Github.




