Na twee maanden ontwikkeling heeft Linus Torvalds de release van de kernel . Onder de meest opvallende veranderingen: de Ext4-modus zonder hoofdlettergevoeligheid, aparte systeemaanroepen voor het aankoppelen van FS, stuurprogramma's voor GPU Mali 4xx/6xx/7xx, de mogelijkheid om wijzigingen in sysctl-waarden te verwerken in BPF-programma's, de device-mapper-module dm-dust, bescherming tegen MDS-aanvallen, ondersteuning voor Sound Open Firmware voor DSP, prestatie-optimalisatie van BFQ, en de PSI (Pressure Stall Information)-subsystem is gereed gemaakt voor gebruik in Android.
In de nieuwe versie zijn 15100 fouten opgelost door 1882 ontwikkelaars,
de patchgrootte is 62 MB (de wijzigingen betroffen 30889 bestanden, 625094 regels code zijn toegevoegd en 531864 regels verwijderd). Ongeveer 45% van alle in 5.2 gepresenteerde
wijzigingen hebben betrekking op stuurprogramma's, ongeveer 21% van de wijzigingen betreft
de update van architectuur-specifieke code, 12%
gelinkt aan het netwerkstack, 3% aan bestandssystemen en 3% aan interne
van de kernelsubsystemen. 12,4% van alle wijzigingen is voorbereid door Intel, 6,3% door Red Hat, 5,4% door Google, 4,0% door AMD, 3,1% door SUSE, 3% door IBM, 2,7% door Huawei, 2,7% door Linaro, 2,2% door ARM, 1,6% door Oracle.
:
- Opslagsubsystemen, invoer/uitvoer en bestandssystemen
- Voor Ext4 is toegevoegd de werking zonder hoofdlettergevoeligheid in bestandsnamen, die alleen kan worden geactiveerd voor specifieke lege mappen met behulp van het nieuwe attribuut «+F» (EXT4_CASEFOLD_FL). Bij het instellen van dit attribuut op een map, zullen alle bestands- en submapbewerkingen binnen deze map zonder hoofdlettergevoeligheid plaatsvinden; de hoofdlettergevoeligheid zal ook worden genegeerd bij zoek- en openbewerkingen (bijvoorbeeld, de bestanden Test.txt, test.txt en test.TXT in dergelijke mappen worden als identiek beschouwd). Standaard blijft het FS hoofdlettergevoelig, behalve voor mappen met het attribuut «chattr +F»;
- De functies voor het verwerken van UTF-8-tekens in bestandsnamen zijn geharmoniseerd en worden toegepast bij het uitvoeren van vergelijkings- en normalisatie-operaties;
- In XFS is de infrastructuur voor het volgen van de status van het bestandssysteem toegevoegd en een nieuwe ioctl voor het opvragen van de operationele status is geïmplementeerd. Er is een experimentele mogelijkheid geïmplementeerd om de superblock-tellers on-the-fly (online scrub) te controleren.
- Een nieuwe device-mapper-module «« is toegevoegd, waarmee het verschijnen van bad blocks op het opslagmedium of fouten bij het lezen van de schijf kan worden gesimuleerd. Deze module vereenvoudigt de debugging en het testen van applicaties en verschillende opslagsystemen onder omstandigheden waarin fouten kunnen optreden;
- een aanzienlijke prestatieoptimalisatie van de BFQ in- en uitvoeringsplanner. De aangebrachte optimalisaties onder zware in-/uitvoersituaties tot 80% de tijd van operaties zoals het starten van applicaties verkorten;
- Een reeks systeemaanroepen voor het mounten van bestandssystemen is toegevoegd: , , , , en . Deze systeemaanroepen maken een aparte verwerking van verschillende fasen van het mounten mogelijk (superblok verwerken, informatie over het FS verkrijgen, mounten, aan een mountpunt hechten), die eerder werd uitgevoerd met de algemene systeemaanroep mount(). Aparte aanroepen maken het mogelijk om complexere mountscenario's uit te voeren en om operaties zoals het opnieuw configureren van het superblok, het inschakelen van opties, het wijzigen van het mountpunt en het verplaatsen naar een andere naamruimte afzonderlijk uit te voeren. Bovendien stelt aparte verwerking ons in staat om de oorzaken van foutcodes nauwkeurig te identificeren en meerdere bronnen in te stellen voor gelaagde FS-systemen zoals overlayfs;
- Een nieuwe operatie IORING_OP_SYNC_FILE_RANGE is toegevoegd aan de interface voor asynchrone invoer/uitvoer io_uring, die acties uitvoert die gelijkwaardig zijn aan de systeemaanroep , evenals de mogelijkheid om eventfd met io_uring te registreren en meldingen te ontvangen over de voltooiing van operaties;
- Voor het CIFS-bestandssysteem is ioctl FIEMAP toegevoegd, dat efficiënte toewijzing van extents mogelijk maakt, evenals ondersteuning voor de SEEK_DATA- en SEEK_HOLE-modi;
- In de FUSE-subsystemen API voor gegevenscachingbeheer;
- In Btrfs is de implementatie van qgroups geoptimaliseerd en is de snelheid van fsync voor bestanden met meerdere harde schakelingen verhoogd. De integriteitscontrolecode is verbeterd, die nu rekening houdt met mogelijke beschadiging van informatie in het RAM voor het wegschrijven van gegevens naar schijf;
- In CEPH is de ondersteuning voor het exporteren van snapshots via NFS toegevoegd;
- De implementatie van NFSv4-mounting in de 'soft'-modus is verbeterd (bij een toegangsfout op de server in de 'soft'-modus retourneert de aanroep onmiddellijk een foutcode, terwijl in de 'hard'-modus de controle niet wordt teruggegeven totdat de toegang tot het FS is hersteld of de timeout is verstreken). In deze nieuwe release is de timeout-verwerking nauwkeuriger gemaakt, is het herstel na een fout versneld en is een nieuwe mountoptie 'softerr' toegevoegd, die de foutcode (ETIMEDOUT) kan wijzigen die wordt geretourneerd bij het verstrijken van de timeout;
- In de nfsdcld-API, bedoeld voor het volgen van de status van NFS-klanten, is de mogelijkheid geïntroduceerd om de status van de cliënt bij herstart correct door de NFS-server te volgen. Zo kan de demon nfsdcld nu fungeren als de verwerker nfsdcltrack;
- Voor AFS emulatie van byte-range sloten in bestanden ();
- Virtualisatie en beveiliging
- Er is gewerkt aan het verhelpen van punten in de kernel die het uitvoeren van code uit beschrijfbare reflecterende geheugengebieden mogelijk maakten, wat potentiële lekken blokkeert die kunnen worden uitgebuit bij een aanval;
- Een nieuwe kernel-opdrachtparameter "mitigations=", die een vereenvoudigde manier biedt om het inschakelen van bepaalde technieken voor bescherming tegen kwetsbaarheden in verband met speculatieve uitvoering van instructies in de CPU te beheren, is toegevoegd. Het doorgeven van "mitigations=off" schakelt alle beschikbare methodes uit, terwijl de standaard ingestelde modus "mitigations=auto" bescherming inschakelt zonder de Hyper Threading te beïnvloeden. De modus "mitigations=auto,nosmt" schakelt Hyper Threading ook uit als dat vereist is door de beschermingsmethode.
- ondersteuning voor elektronische digitale handtekening volgens GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), door Vitali Chikuno van "Bazalt SPO". Ondersteuning voor AES128-CCM is toegevoegd aan de ingebouwde implementatie van TLS. Ondersteuning voor AEAD-algoritmen is toegevoegd aan de crypto_simd-module;
- In Kconfig is er een aparte sectie "kernel hardening" met opties voor het versterken van de bescherming van de kernel. Momenteel zijn er in de nieuwe sectie alleen instellingen verzameld voor het inschakelen van versterkende GCC-plugincontroles;
- De kernelcode is bijna van ononderbroken case-expressies in switch (zonder return of break na elk caseblok). Er moeten nog 32 van de 2311 gevallen van dit soort gebruik van switch worden gecorrigeerd, waarna de compilatie van de kernel de modus "-Wimplicit-fallthrough" kan toepassen;
- Voor de PowerPC-architectuur is ondersteuning voor hardwaremechanismen geïmplementeerd die ongewenste toegangspaden van de kernel tot gegevens in de gebruikersruimte beperken;
- Code is toegevoegd voor het blokkeren van de MDS-klasse (Microarchitectural Data Sampling) in Intel-processoren. De kwetsbaarheid van het systeem kan worden gecontroleerd via de SysFS-variabele "/sys/devices/system/cpu/vulnerabilities/mds". twee beschermingsmodi: volledig, dat een bijgewerkte microcode vereist, en omzeilend, dat de CPU-buffers tijdens de overdracht van de controle naar de gebruikersruimte of gastmachine niet volledig kan garanderen. Voor het beheren van de beschermingsmodi is er een parameter "mds=" aan de kernel toegevoegd, die de waarden "full", "full,nosmt" (plus uitschakeling van Hyper-Threads) en "off" kan aannemen;
- Op x86-64 systemen is er voor IRQ, foutafhandelingsmechanismen en uitzonderinghandlers bescherming "stack guard-page" toegevoegd, wat inhoudt dat er een pagina in het geheugen wordt geplaatst aan de rand van de stack, waarbij toegang tot deze pagina een uitzondering (page-fault) genereert;
- sysctl-instelling vm.unprivileged_userfaultfd is toegevoegd, die de mogelijkheid regelt voor niet-privilegeprocessen om de systeemaanroep userfaultfd() te gebruiken;
- Netwerk subsysteem
- ondersteuning voor IPv6 gateways voor IPv4-routes. Bijvoorbeeld, nu kunnen routeringsregels van de soort "ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0" worden opgegeven;
- Voor ICMPv6 zijn ioctl-aanroepen icmp_echo_ignore_anycast en icmp_echo_ignore_multicast geïmplementeerd om ICMP ECHO voor anycast en
multicast adressen te negeren. de mogelijkheid om de intensiteit van ICMPv6-pakketverwerking te beperken; - Voor het mesh-protocol B.A.T.M.A.N. ("Better Approach To Mobile Adhoc Networking"), dat decentrale netwerken mogelijk maakt waarin elke node is verbonden via naburige nodes, ondersteuning voor deze omzetting van multicast naar unicast, evenals de mogelijkheid van beheer via sysfs;
- In ethtool is er een nieuwe parameter Fast Link Down toegevoegd, waarmee de tijd die nodig is om informatie over een linkuitval voor 1000BaseT te ontvangen, kan worden verkort (onder normale omstandigheden kan de vertraging oplopen tot 750 ms);
- Er is nu tunnels Foo-Over-UDP binden aan een specifiek adres, netwerkinterface of socket (voorheen alleen gebonden op basis van een algemene maskertype);
- In de draadloze stack de mogelijkheid om handlers te implementeren
OWE (Opportunistic Wireless Encryption) in de gebruikersruimte; - In Netfilter is ondersteuning voor het adresfamilie inet toegevoegd aan de nat-ketens (bijvoorbeeld kan nu één vertaalregel worden gebruikt voor zowel ipv4 als ipv6, zonder de regels voor ipv4 en ipv6 te splitsen);
- In netlink strikt voor strikte controle van de geldigheid van alle berichten en attributen, waarbij overschrijding van de verwachte attributiegrootte niet is toegestaan en toevoeging van extra gegevens aan het einde van de berichten is verboden;
- Geheugen en systeemdiensten
- In de systeembel naar clone() is een vlag CLONE_PIDFD toegevoegd, waarmee een bestandsdescriptor 'pidfd' aan het bovenliggende proces wordt geretourneerd, die wordt geïdentificeerd met het gemaakte dochterproces. Deze bestandsdescriptor kan bijvoorbeeld worden gebruikt om signalen te verzenden zonder het risico van een raceconditie (direct na het verzenden van het signaal kan de doel PID worden vrijgegeven als gevolg van het beëindigen van het proces en in gebruik zijn door een ander proces);
- Voor de tweede versie van cgroups is functionaliteit voor de controller freezer toegevoegd, waarmee de uitvoering binnen een cgroup kan worden gestopt en tijdelijk enkele middelen (CPU, invoer/uitvoer en potentieel zelfs geheugen) kunnen worden vrijgegeven voor het uitvoeren van andere taken. Beheer vindt plaats via de beheersbestanden cgroup.freeze en cgroup.events in de cgroup-hiërarchie. Het schrijven van 1 in cgroup.freeze bevriest de processen in de huidige cgroup en alle onderliggende groepen. Aangezien bevriezen enige tijd kost, is er ook een bestand cgroup.events aangeboden waarlangs men informatie kan krijgen over het beëindigen van de operatie;
- export van geheugenattributen die zijn gekoppeld aan elke node in sysfs, waardoor vanuit de gebruikersruimte kan worden bepaald hoe het bankieren van geheugen wordt behandeld in systemen met heterogeen geheugen;
- De PSI (Pressure Stall Information) subsystem is verbeterd, wat het mogelijk maakt om informatie te analyseren over de wachttijd voor het verkrijgen van verschillende middelen (CPU, geheugen, invoer/uitvoer) voor bepaalde taken of sets van processen in een cgroup. Met behulp van PSI kunnen verwerkingsprogramma's in de gebruikersruimte nauwkeuriger het niveau van systeembelasting en de aard van de vertraging inschatten, vergeleken met Load Average. In de nieuwe versie is ondersteuning toegevoegd voor het instellen van gevoeligheidsdrempels en de mogelijkheid om de aanroep poll() te gebruiken om melding te krijgen van het overschrijden van ingestelde drempelwaarden in een bepaalde tijdsperiode. Deze mogelijkheid maakt het mogelijk om in Android het gebrek aan geheugen in een vroeg stadium te volgen, de bron van problemen te identificeren en onbelangrijke toepassingen te beëindigen zonder merkbare problemen voor de gebruiker te veroorzaken. Tijdens stress-tests toonden monitoringshulpmiddelen voor geheugengebruik op basis van PSI tot 10 keer minder valse positieven vergeleken met de statistieken van vmpressure;
- De code is geoptimaliseerd voor de controle van BPF-programma's, waardoor bij grotere programma's de controle tot 20 keer sneller kan worden uitgevoerd. Deze optimalisatie heeft het limiet voor de grootte van BPF-programma's verhoogd van 4096 naar een miljoen instructies;
- Voor BPF-programma's de mogelijkheid om toegang te krijgen tot globale gegevens, wat het mogelijk maakt om globale variabelen en constanten in de programma's te definiëren;
- Toegevoegd , waarmee vanuit BPF-programma's wijzigingen in de sysctl-parameters kunnen worden gecontroleerd;
- Voor de MIPS32-architectuur is een JIT-compiler voor de eBPF-virtuele machine geïmplementeerd;
- Voor de 32-bits PowerPC-architectuur is ondersteuning toegevoegd voor de KASan-functie (Kernel Address Sanitizer), die helpt bij het opsporen van fouten tijdens het werken met geheugen;
- Op x86-64-systemen is het beperking voor het plaatsen van crash-dumps in geheugenruimten boven de 896MB opgeheven;
- Voor de s390-architectuur is ondersteuning geïmplementeerd voor de randomisatie van de adresruimte van de kernel (KASLR) en de mogelijkheid om digitale handtekeningen te verifiëren tijdens het opstarten van de kernel via kexec_file_load();
- Voor de PA-RISC-architectuur is ondersteuning toegevoegd voor de kern-debugger (KGDB), spronlabels en kprobes;
- Apparatuur
- De driver is opgenomen voor de GPU Mali 400/450, die wordt gebruikt in veel oude chips op basis van de ARM-architectuur. Voor nieuwere GPU's van Mali is de Panfrost-driver toegevoegd, die chips ondersteunt die zijn gebaseerd op de microarchitecturen Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) en Bifrost (Mali G3x, G5x, G7x);
- Ondersteuning voor audiotoestellen die open firmware gebruiken is toegevoegd (). Ondanks de aanwezigheid van open drivers bleef de code van de firmwares voor audiokommen nog steeds gesloten en werd deze in binaire vorm geleverd. Het Sound Open Firmware-project is ontwikkeld door Intel om open firmwares te creëren voor DSP-chips die zijn betrokken bij geluidsverwerking (later heeft Google zich ook bij de ontwikkeling aangesloten). Momenteel zijn er binnen het project al open firmwares voorbereid voor audiokommen op Intel-platforms: Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake en IceLake;
- In de DRM-driver van Intel (i915) is ondersteuning toegevoegd voor de chips
Elkhartlake (Gen11). PCI-identificaties voor Comet Lake (Gen9) chips zijn toegevoegd. De ondersteuning voor Icelake-chips is gestabiliseerd, voor welke ook extra PCI-identificaties van apparaten zijn toegevoegd.
de modus voor asynchrone schakeling tussen twee buffers in videogeheugen (async flip) tijdens schrijfoperaties via mmio, waardoor de prestaties van sommige 3D-toepassingen aanzienlijk zijn verbeterd (bijvoorbeeld, de prestaties in de 3DMark Ice Storm-test stegen met 300-400%). Ondersteuning voor technologie is toegevoegd. (High-bandwidth Digital Content Protection) voor het versleutelen van videobeelden die via HDMI worden verzonden; - In de amdgpu-driver voor de GPU Vega20 ondersteuning voor RAS (Reliability, Availability, Serviceability) en experimentele ondersteuning voor de SMU 11-subsystemen, die Powerplay-technologie hebben vervangen. Voor GPU Vega12 ondersteuning voor de BACO-modus (Bus Active, Chip Off). Begonnen met ondersteuning voor XGMI, een hogesnelheidsbus (PCIe 4.0) voor verbinding met de GPU. In de amdkfd-driver zijn ontbrekende identificatoren voor kaarten op basis van GPU Polaris10 toegevoegd;
- In de Nouveau-driver is ondersteuning toegevoegd voor kaarten die zijn gebaseerd op de NVIDIA Turing 117-chipset (TU117, gebruikt in GeForce GTX 1650). In
kconfig instelling voor het uitschakelen van verouderde functies die niet langer worden gebruikt in actuele versies van libdrm; - In de DRM API en amdgpu-driver is ondersteuning toegevoegd voor synchronisatie-objecten "timeline", zodat klassieke vergrendelingen kunnen worden vermeden.
- De vboxvideo-driver voor de virtuele GPU VirtualBox is overgeplaatst van de staging-tak naar de hoofdversie;
- De aspeed-driver voor de GFX-chip van SoC ASPEED is toegevoegd;
- Ondersteuning is toegevoegd voor ARM SoC en Intel Agilex-borden (SoCFPGA), NXP i.MX8MM, Allwinner (RerVision H3-DVK (H3), Oceanic 5205 5inMFD, Beelink GS2 (H6), Orange Pi 3 (H6)), Rockchip (Orange Pi RK3399, Nanopi NEO4, Veyron-Mighty Chromebook), Amlogic: SEI Robotics SEI510,
ST Micro (stm32mp157a, stm32mp157c), NXP (
Eckelmann ci4x10 (i.MX6DL),i.MX8MM EVK (i.MX8MM),
ZII i.MX7 RPU2 (i.MX7),
ZII SPB4 (VF610),
Zii Ultra (i.MX8M),
TQ TQMa7S (i.MX7Solo),
TQ TQMa7D (i.MX7Dual),
Kobo Aura (i.MX50),
Menlosystems M53 (i.MX53)), NVIDIA Jetson Nano (Tegra T210).
Tegelijkertijd heeft de Latijns-Amerikaanse Vrije Software Stichting
optie — , vrijgemaakt van elementen van firmware en drivers met niet-vrije componenten of code-segmenten waarvan het gebruik is beperkt door de fabrikant. In deze nieuwe release is het opstarten van bestanden ingesloten.
Sound Open Firmware. Het opstarten van blobs in de drivers is uitgeschakeld.
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp en ucsi_ccg. De code voor het opruimen van blobs in drivers en subsystemen ixp4xx, imx-sdma, amdgpu, nouveau en goya is bijgewerkt, evenals in de documentatie voor de microcode. Het opruimen van blobs in de driver r8822be is gestaakt vanwege verwijdering.
Bron: opennet.ru
