Po dvoch mesiacoch vývoja Linus Torvalds uvoľnenie jadra . Medzi najvýraznejšie zmeny patrí: režim fungovania Ext4 bez ohľadu na veľkosť písmen, samostatné systémové volania na montovanie FS, ovládače pre GPU Mali 4xx/6xx/7xx, možnosť spracovania zmien hodnôt sysctl v programoch BPF, modul device-mapper dm-dust, ochrana pred útokmi MDS, podpora Sound Open Firmware pre DSP, optimalizácia výkonu BFQ, posun subsystému PSI (Pressure Stall Information) do štádia použiteľnosti v Androide.
Do novej verzie bolo prijatých 15100 opráv od 1882 vývojárov,
veľkosť patchu je 62 MB (zmiany sa dotkli 30889 súborov, pridaných 625094 riadkov kódu, odstránených 531864 riadkov). Asi 45 % všetkých predstavených zmien v 5.2
je spojených s ovládačmi zariadení, približne 21 % zmien má
vzťah k aktualizácii kódu špecifického pre hardvérové architektúry, 12 %
súvisiace so sieťovým zásobníkom, 3 % — súborovými systémami a 3 % s internými
subsystémy jadra. 12.4 % všetkých zmien pripravila spoločnosť Intel, 6.3 % – Red Hat, 5.4 % – Google, 4.0 % – AMD, 3.1 % – SUSE, 3 % – IBM, 2.7 % – Huawei, 2.7 % – Linaro, 2.2 % – ARM, 1.6 % – Oracle.
:
- Diskový subsystém, I/O a súborové systémy
- Pre Ext4 bola pridaná prevádzka bez rozdielu veľkosti písmen v názvoch súborov, ktorá sa aktivuje iba v pripojení k jednotlivým prázdnym adresárom pomocou nového atribútu „+F“ (EXT4_CASEFOLD_FL). Pri nastavovaní tohto atribútu na adresár budú všetky operácie so súbormi a podadresármi vnútri vykonávané bez ohľadu na veľkosť písmen, vrátane ignorovania veľkosti písmen pri vyhľadávaní a otváraní súborov (napríklad súbory Test.txt, test.txt a test.TXT v podobných adresároch budú považované za rovnaké). Predvolene ostáva FS citlivá na veľkosť písmen, s výnimkou adresárov s atribútom „chattr +F“;
- Zjednotené funkcie spracovania znakov UTF-8 v názvoch súborov, ktoré sa používajú pri vykonávaní operácií porovnávania a normalizácie reťazcov;
- V XFS bola pridaná infraštruktúra na sledovanie stavu súborového systému a nový ioctl na žiadosť o stav funkčnosti. Bola implementovaná experimentálna možnosť na kontrolu za behu (online scrub) čítačov superbloku.
- Bol pridaný nový modul device-mapper „“, ktorý umožňuje simulovať vznik bad-blokov na médiu alebo chyby pri čítaní z disku. Modul umožňuje zjednodušiť ladenie a testovanie aplikácií a rôznych systémov ukladania dát v podmienkach možných zlyhaní;
- značná optimalizácia výkonu plánovača I/O BFQ. V podmienkach vysokého zaťaženia vstupu/výstupu boli vykonané optimalizácie až o 80 % skrátiť čas takých operácií, ako je spúšťanie aplikácií;
- Pridaná séria systémových volaní pre montovanie súborových systémov: , , , , a . Tieto systémové volania umožňujú oddelené spracovanie rôznych fáz montovania (spracovanie superbloku, získanie informácií o FS, pripojenie, pripevnenie k bodu montovania), ktoré sa predtým vykonávali pomocou spoločného systémového volania mount(). Oddelené volania umožňujú vykonávať komplexnejšie scenáre montovania a samostatne realizovať také operácie, ako je prekonfigurácia superbloku, zapínanie možností, zmena bodu montovania a presun do iného menného priestoru. Okrem toho umožňuje oddelené spracovanie presne určiť príčiny výstupu kódov chýb a definovať niekoľko zdrojov pre viacvrstvové FS, ako je overlayfs;
- Do rozhrania pre asynchrónny vstup/výstup io_uring bola pridaná nová operácia IORING_OP_SYNC_FILE_RANGE, ktorá vykonáva činnosti, ekvivalentné systémovému volaniu , ako aj bola implementovaná možnosť registrácie eventfd s io_uring a získavania upozornení o dokončení operácií;
- Pre súborový systém CIFS bol pridaný ioctl FIEMAP, zabezpečujúci efektívne mapovanie extentov, ako aj podpora režimov SEEK_DATA a SEEK_HOLE;
- V subsystéme FUSE API na správu dátovej cache;
- V Btrfs bola optimalizovaná implementácia qgroups a zvýšená rýchlosť vykonávania fsync pre súbory s viacerými tvrdými odkazmi. Vylepšený kód na kontrolu integrity dát, ktorý teraz zohľadňuje možné poškodenie informácií v RAM pred zmazaním dát na disk;
- V CEPH bola pridaná podpora exportu snapshotov prostredníctvom NFS;
- Vylepšená implementácia montovania NFSv4 v režime „soft“ (pri výskyte chyby prístupu k serveru v móde „soft“ volanie okamžite vráti kód chyby, zatiaľ čo v móde „hard“ sa správa nevracia až do obnovenia dostupnosti FS alebo timeoutu). V novej verzii bola zabezpečená presnejšia správa timeoutov, urýchlené obnovenie po zlyhaní a bola pridaná nová možnosť montovania „softerr“, ktorá umožňuje zmeniť kód chyby (ETIMEDOUT), ktorý sa vracia pri nastúpení timeoutu;
- V API nfsdcld, určenom na sledovanie stavu klientov NFS, je zabezpečená možnosť správneho sledovania stavu klienta nfsdcld počas reštartovania. Týmto spôsobom teraz démon nfsdcld môže plniť úlohu spracovateľa nfsdcltrack;
- Pre AFS emulácia blokovania rozsahu bajtov v súboroch ();
- Virtualizácia a bezpečnosť
- Bola vykonaná práca na odstránení miest v jadre, ktoré umožňovali vykonávanie kódu z zapisovateľných reflektovaných oblastí pamäte, čím sa blokujú potenciálne zraniteľnosti, ktoré by mohli byť využité v útokoch;
- Pridaný nový parameter príkazového riadku jadra „mitigations=“, ktorý poskytuje zjednodušený spôsob správy zapínania rôznych techník ochrany pred zraniteľnosťami súvisiacimi so špekulatívnym vykonávaním inštrukcií v CPU. Predanie „mitigations=off“ vypne všetky dostupné metódy, zatiaľ čo predvolený režim „mitigations=auto“ zapína ochranu, ale neovplyvňuje používanie Hyper Threadingu. Režim „mitigations=auto,nosmt“ navyše vypína Hyper Threading, ak to vyžaduje metóda ochrany.
- podpora elektronického podpisu podľa ГОСТ Р 34.10-2012 (RFC 7091, ISO/IEC 14888-3), Vitalijom Čikunovom z „Bazalt SPO“. Do zabudovanej implementácie TLS bola pridaná podpora AES128-CCM. Do modulu crypto_simd bola pridaná podpora algoritmov AEAD;
- V Kconfig samostatná sekcia „kernel hardening“ s možnosťami na posilnenie ochrany jadra. V súčasnosti sú v novej sekcii zatiaľ zhromaždené len nastavenia na zapínanie posilňujúcich kontrol GCC pluginov;
- Kód jadra je takmer bezprerušených výrazov case v switch (bez return alebo break po každom bloku case). Ostáva opraviť 32 z 2311 prípadov takéhoto použitia switch, po čom bude pri zostavovaní jadra možné použiť režim „-Wimplicit-fallthrough“;
- Pre architektúru PowerPC bola implementovaná podpora hardvérových mechanizmov obmedzujúcich neželané prístupové cestu jadra k údajom v užívateľskom priestore;
- Pridaný kód na blokovanie triedy MDS (Microarchitectural Data Sampling) v procesoroch Intel. Skontrolovať zraniteľnosť systému môžete cez SysFS premennú „/sys/devices/system/cpu/vulnerabilities/mds“. Dva režimy ochrany: plný, ktorý vyžaduje aktualizovaný mikrokód, a obchádzajúci, ktorý úplne nezaručuje vyčistenie CPU bufferov pri predávaní riadenia do priestoru používateľa alebo hosťovskej sústavy. Na ovládanie režimov ochrany bol do jadra pridaný parameter „mds=“, ktorý môže nadobúdať hodnoty „full“, „full,nosmt“ (+ vypnutie Hyper-Threads) a „off“;
- Na systémoch x86-64 bola pre IRQ, mechanizmy ladenia a spracovateľov výnimiek pridaná ochrana „stack guard-page“, ktorej podstatou je substitúcia na hranici so zásobníkom strán pamäte, ktorých prístup vedie k generovaniu výnimky (page-fault);
- Pridaná sysctl nastavenie vm.unprivileged_userfaultfd, ktorá ovláda možnosť používania systémového volania userfaultfd() neoprávnenými procesmi;
- Sieťový subsystém
- Podpora IPv6 brán pre IPv4 smerovanie. Napríklad, teraz je možné uvádzať pravidlá smerovania typu „ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0“;
- Pre ICMPv6 boli realizované ioctl volania icmp_echo_ignore_anycast a icmp_echo_ignore_multicast pre ignorovanie ICMP ECHO pre anycast a
multicast adresy. Možnosť obmedziť intenzitu spracovania ICMPv6 paketov; - Pre mesh protokol B.A.T.M.A.N. („Better Approach To Mobile Adhoc Networking), ktorý umožňuje vytvárať decentralizované siete, kde je každý uzol spojený cez susedné uzly, Podpora pre transláciu z multicast do unicast a možnosť správy prostredníctvom sysfs;
- V ethtool Nový parameter Fast Link Down, ktorý umožňuje skrátiť čas príchodu informácie o udalosti odpojenia linky pre 1000BaseT (v bežných podmienkach meškanie dosahuje až 750ms);
- Objavila sa Pripútanie tunelov Foo-Over-UDP k určitému adresu, sieťovému rozhraniu alebo socketu (predtým sa pripútavanie vykonávalo len na základe všeobecnej masky);
- V bezdrôtovom stacku Možnosť realizácie spracovateľov
OWE (Opportunistic Wireless Encryption) v používateľskom priestore; - V Netfilter do nat reťazcov bola pridaná podpora adresného priestoru inet (napríklad, teraz je možné použiť jedno pravidlo translácie na spracovanie ipv4 a ipv6, bez rozdeľovania pravidiel pre ipv4 a ipv6);
- V netlink strict na prísne overovanie správnosti všetkých správ a atribútov, v ktorom nie je povolené prekročenie očakávanej veľkosti atribútov a zakazuje sa pridávanie doplnkových údajov na koniec správ;
- Pamäť a systémové služby
- Do systémového volání clone() byl přidán flag CLONE_PIDFD, který, pokud je uveden, vrací rodičovskému procesu souborový deskriptor „pidfd“ spojený s nově vytvořeným podprocesem. Tento souborový deskriptor lze například použít k odesílání signálů, aniž by hrozilo riziko závodu (ihned po odeslání signálu může cílový PID být uvolněn kvůli ukončení procesu a obsazen jiným procesem);
- Druhá verze cgroups přidala funkčnost kontroleru freezer, pomocí kterého lze zastavit činnost v cgroup a dočasně uvolnit některé zdroje (CPU, vstup/výstup a potenciálně i paměť) pro provádění jiných úloh. Ovládání se provádí prostřednictvím ovládacích souborů cgroup.freeze a cgroup.events v hierarchii cgroup. Zápis 1 do cgroup.freeze zmrazuje procesy v aktuálním cgroup a ve všech podřízených skupinách. Protože zmrazení vyžaduje určitou dobu, byl navíc navržen soubor cgroup.events, prostřednictvím kterého lze zjistit o dokončení operace;
- export vlastností paměti připojené k každému uzlu v sysfs, což umožňuje z uživatelského prostoru určit charakter zpracování bank paměti v systémech s heterogenní pamětí;
- Byla vylepšena podmínková podsyslka PSI (Pressure Stall Information), která umožňuje analyzovat informace o čekací době na získání různých zdrojů (CPU, paměť, vstup/výstup) pro určité úlohy nebo sady procesů v cgroup. Pomocí PSI mohou zpracovatelé v uživatelském prostoru přesněji posoudit úroveň zatížení systému a povahu zpomalení, ve srovnání s Load Average. V nové verzi byla zajištěna podpora nastavení prahových citlivostí a možnost použít volání poll() k získání oznámení o překročení stanovených prahových hodnot za určité časové období. Tato funkcionalita umožňuje v Androidu sledovat nedostatek paměti v rané fázi, určit zdroj problémů a ukončit méně důležité aplikace, aniž by vznikly zjevné problémy pro uživatele. Při zatěžkávacím testování monitorovací nástroje spotřeby paměti na základě PSI prokázaly o 10 méně falešných poplachů ve srovnání se statistikou vmpressure;
- Optimalizácia kódu na kontrolu BPF programov bola vykonaná, čo umožnilo testovanie veľkých programov až 20-krát rýchlejšie. Optimalizácia zvýšila limit veľkosti BPF programov z 4096 na milión inštrukcií;
- Pre BPF programy možnosť prístupu k globálnym údajom, čo umožňuje definovať v programoch globálne premenné a konštanty;
- Pridané , umožňujúci kontrolu zmien parametrov sysctl z BPF programov;
- Pre architektúru MIPS32 bol implementovaný JIT kompilátor pre virtuálny stroj eBPF;
- Pre 32-bitovú architektúru PowerPC pridala podpora debuggovací nástroj KASan (Kernel address sanitizer), ktorý umožňuje odhaľovať chyby pri práci s pamäťou;
- Na systémoch x86-64 bola odstránená hranica pre umiestnenie dumpov stavu pri páde jadra (crash-dump) v oblastiach pamäte nad 896MB;
- Pre architektúru s390 bola implementovaná podpora randomizácie adresového priestoru jadra (KASLR) a možnosť verifikácie digitálnych podpisov pri zavádzaní jadra cez kexec_file_load();
- Pre architektúru PA-RISC bola pridaná podpora debuggeru jadra (KGDB), skokových značiek a kprobes;
- Zariadenie
- Súčasťou je ovládač pre GPU Mali 400/450, používaných v mnohých starých čipoch na báze architektúry ARM. Pre novšie GPU Mali bol pridaný ovládač Panfrost, ktorý podporuje čipy založené na mikroarchitektúrach Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) a Bifrost (Mali G3x, G5x, G7x);
- Bola pridaná podpora zvukových zariadení využívajúcich otvorené firmvér (). Napriek existencii otvorených ovládačov zostával kód firmvéru pre zvukové čipy zatvorený a dodávaný v binárnej forme. Projekt Sound Open Firmware bol vyvinutý spoločnosťou Intel na vytvorenie otvorených firmvérov pre DSP čipy súvisiace s spracovaním zvuku (následne sa na vývoji podieľal aj Google). V súčasnosti sú už v rámci projektu pripravené otvorené firmvéry pre zvukové čipy platforiem Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake a IceLake;
- V DRM ovládači Intel (i915) bola pridaná podpora čipov
Elkhartlake (Gen11). Boli pridané PCI identifikátory pre čipy Comet Lake (Gen9). Stabilizovala sa podpora čipov Icelake, pre ktoré boli pridané ďalšie PCI identifikátory zariadení.
asynchrónne prepnúť režim medzi dvoma pamäťovými zásobníkmi vo video pamäti (async flip) pri vykonávaní operácií zápisov cez mmio, čo výrazne zvýšilo výkon niektorých 3D aplikácií (napríklad výkon v teste 3DMark Ice Storm sa zvýšil o 300-400%). Pridaná podpora technológie (High-bandwidth Digital Content Protection) na šifrovanie videosignálu prenášaného cez HDMI; - V ovládači amdgpu pre GPU Vega20 podpora RAS (Reliability, Availability, Serviceability) a experimentálna podpora subsystému SMU 11, ktorý nahradil technológiu Powerplay. Pre GPU Vega12 podpora režimu BACO (Bus Active, Chip Off). Pridaná základná podpora XGMI, vysoko rýchlej zbernice (PCIe 4.0) na prepojenie GPU. V ovládači amdkfd boli pridané chýbajúce identifikátory kariet založených na GPU Polaris10;
- V ovládači Nouveau bola pridaná podpora dosiek na báze čipsetu NVIDIA Turing 117 (TU117, používa sa v GeForce GTX 1650). V
kconfig nastavenie na zakázanie zastaraných funkcií, ktoré už nie sú použité vo aktuálnych vydaniach libdrm; - V API DRM a ovládači amdgpu bola pridaná podpora synchronizačných objektov „timeline“, ktoré umožňujú obísť klasické zámky.
- Z vetvy staging bol do hlavného zloženia presunutý ovládač vboxvideo pre virtuálny GPU VirtualBox;
- Pridaný ovládač aspeed pre GFX čip SoC ASPEED;
- Pridaná podpora ARM SoC a desiek Intel Agilex (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).
Zároveň Latinskoamerická nadácia slobodného softvéru
variantu — , zbavené prvkov firmvéru a ovládačov obsahujúcich neslobodné komponenty alebo časti kódu, ktorých používanie je obmedzené výrobcom. V novom vydaní je zahrnuté zaťaženie súborov
Sound Open Firmware. V ovládačoch bola zakázaná načítanie blobov
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp a ucsi_ccg. Aktualizovaný kód čistenia blobov v ovládačoch a subsystémoch ixp4xx, imx-sdma, amdgpu, nouveau a goya, ako aj v dokumentácii k mikrokódu. Čistenie blobov v ovládači r8822be bolo zastavené kvôli jeho odstráneniu.
Zdroj: opennet.ru
