Po dvou měsících vývoje Linus Torvalds jádrný release . Mezi nejvýraznější změny patří: režim práce Ext4 bez ohledu na velikost písmen, oddělené systémové volání pro připojení FS, ovladače pro GPU Mali 4xx / 6xx / 7xx, možnost zpracování změn hodnot sysctl v programech BPF, modul device-mapper dm-dust, ochrana proti útokům MDS, podpora Sound Open Firmware pro DSP, optimalizace výkonu BFQ, rozšíření subsystému PSI (Pressure Stall Information) k možnosti použití v Androidu.
Do nové verze bylo zařazeno 15100 oprav od 1882 vývojářů,
velikost patche – 62 MB (změny se dotkly 30889 souborů, přidáno 625094 řádků kódu, odstraněno 531864 řádků). Přibližně 45% všech předložených v 5.2
změn se týká ovladačů zařízení, přibližně 21% změn má
vztah k aktualizaci kódu specifického pro hardwarové architektury, 12%
se týká síťového zásobníku, 3% – souborových systémů a 3% s interními
subsystémy jádra. 12,4% všech změn připravila společnost 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, vstup/výstup a souborové systémy
- Pro Ext4 byla přidána podpora práce bez ohledu na velikost písmen v názvech souborů, která se aktivuje pouze v připojení k jednotlivým prázdným adresářům pomocí nového atributu „+F“ (EXT4_CASEFOLD_FL). Po nastavení tohoto atributu na adresář budou všechny operace se soubory a podadresáři uvnitř prováděny bez ohledu na velikost písmen, včetně toho, že velikost písmen bude ignorována při vyhledávání a otevírání souborů (např. soubory Test.txt, test.txt a test.TXT v podobných adresářích budou považovány za totožné). Ve výchozím nastavení FS nadále zůstává citlivý na velikost písmen, s výjimkou adresářů s atributem „chattr +F“;
- Byly unifikovány funkce zpracování znaků UTF-8 v názvech souborů, které se používají při vykonávání operací porovnávání a normalizace řetězců;
- V XFS byla přidána infrastruktura pro sledování stavu souborového systému a nový ioctl pro dotazování na stav funkčnosti. Byla implementována experimentální možnost pro kontrolu za běhu (online scrub) počítačů superbloku.
- Byl přidán nový modul device-mapper „“, který umožňuje simulovat vznik vadných bloků na médiu nebo chyby při čtení z disku. Modul usnadňuje ladění a testování aplikací a různých systémů ukládání v podmínkách možného výskytu poruch;
- významná optimalizace výkonu plánovače I/O BFQ. V podmínkách vysokého zatížení vstupu/výstupu přinesené optimalizace až o 80 % zkrátit dobu takových operací, jako je spouštění aplikací;
- Byla přidána série systémových volání pro montování souborových systémů: , , , , a . Tato systémová volání umožňují odděleně zpracovat různé fáze montování (zpracovat superblok, získat informace o FS, přimontovat, připojit k montážnímu bodu), které byly dříve prováděny pomocí společného systémového volání mount(). Oddělená volání umožňují provádět složitější scénáře montování a zvlášť provádět takové operace, jako je přeconfigurování superbloku, zapínání voleb, změna montážního bodu a přesun do jiného jmenného prostoru. Kromě toho oddělené zpracování umožňuje přesně určit důvody výstupu kódů chyb a nastavovat více zdrojů pro vícestupňové FS, jako je overlayfs;
- Do rozhraní pro asynchronní vstup/výstup io_uring byla přidána nová operace IORING_OP_SYNC_FILE_RANGE, která provádí akce ekvivalentní systémovému volání , a také byla implementována možnost registrace eventfd s io_uring a získávání oznámení o dokončení operací;
- Pro souborový systém CIFS byl přidán ioctl FIEMAP, který zajišťuje efektivní mapování extentů, a také podpora režimů SEEK_DATA a SEEK_HOLE;
- V subsystému FUSE API pro správu datového cachingu;
- V Btrfs byla optimalizována implementace qgroups a zvýšena rychlost provádění fsync pro soubory s více tvrdými odkazy. Byla vylepšena kontrola integrity dat, která nyní zohledňuje možné poškození informací v RAM před zapsáním dat na disk;
- V CEPH byla přidána podpora exportu snapshotů přes NFS;
- Byla vylepšena implementace montování NFSv4 v režimu „soft“ (při výskytu chyby při přístupu k serveru v režimu „soft“ volání okamžitě vrací kód chyby, zatímco v režimu „hard“ kontrola není vydána až do obnovení dostupnosti FS nebo vypršení času). V nové verzi byla zajištěna přesnější manipulace s timeoutem, urychleno zotavení po selhání a byla přidána nová volba pro montování „softerr“, která umožňuje změnit kód chyby (ETIMEDOUT), vracený při vypršení času;
- V API nfsdcld, určeném pro sledování stavu klientů NFS, je zajištěna možnost správného sledování stavu klienta ze strany NFS serveru při restartu. Tímto způsobem může demon nfsdcld nyní fungovat jako zpracovatel nfsdcltrack;
- Pro AFS emulace blokování oblastí bajtů v souborech ();
- Virtualizace a bezpečnost
- Byla provedena práce na odstranění míst v jádře, která umožňují vykonání kódu z zapisovatelných zrcadlových oblastí paměti, což umožňuje blokovat potenciální slabiny, které mohou být zneužity během útoku;
- Přidán nový parametr příkazového řádku jádra „mitigations=“, který poskytuje zjednodušený způsob řízení zapnutí různých technik ochrany proti zranitelnostem spojeným s spekulativním vykonáváním instrukcí v CPU. Přenos „mitigations=off“ vypíná všechny dostupné metody, zatímco výchozí režim „mitigations=auto“ zapíná ochranu, ale nemá vliv na použití Hyper Threadingu. Režim „mitigations=auto,nosmt“ navíc vypíná Hyper Threading, pokud to vyžaduje metoda ochrany.
- podpora elektronického digitálního podpisu podle GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), Vitalijem Čikunovem z „Bazalt SPO“. Do integrované implementace TLS byla přidána podpora AES128-CCM. Do modulu crypto_simd byla přidána podpora algoritmů AEAD;
- V Kconfig je samostatná sekce „kernel hardening“ s volbami pro zvýšení ochrany jádra. V současnosti jsou v nové sekci shromážděny pouze nastavení pro povolení zpevňujících kontrol GCC pluginů;
- Kód jádra je téměř nepřerušených výrazů case ve switch (bez return nebo break za každým blokem case). Zbývá opravit 32 z 2311 případů podobného použití switch, po čemž při sestavování jádra bude možné použít režim „-Wimplicit-fallthrough“;
- Pro architekturu PowerPC byla implementována podpora hardwarových mechanismů omezení nežádoucích cest přístupu jádra k datům v uživatelském prostoru;
- Byl přidán kód pro blokaci třídy MDS (Microarchitectural Data Sampling) v procesorech Intel. Zranitelnost systému lze ověřit prostřednictvím SysFS proměnné „/sys/devices/system/cpu/vulnerabilities/mds“. Dva ochranné režimy: plný, vyžadující aktuální mikrokód, a obcházející, který zcela negarantuje vyčištění CPU paměťových bufferů při předání řízení uživatelskému prostoru nebo hostitelskému systému. Pro správu ochranných režimů byl do jádra přidán parametr „mds=“, který může přijímat hodnoty „full“, „full,nosmt“ (+ vypnutí Hyper-Threads) a „off“;
- Na systémech x86-64 byla přidána ochrana „stack guard-page“ pro IRQ, mechanizmy ladění a obsluhu výjimek, jejíž podstatou je vložení stránek paměti na hranici se zásobníkem, přičemž přístup k těmto stránkám vyvolává výjimku (page-fault);
- Byla přidána sysctl-nastavení vm.unprivileged_userfaultfd, které řídí možnost použití systémového volání userfaultfd() neoprávněnými procesy;
- Síťová subsystém
- podpora IPv6 přechodů pro IPv4 cesty. Například nyní je možné zadávat pravidla pro směrování ve formátu „ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0“;
- Pro ICMPv6 byly implementovány ioctl-výzvy icmp_echo_ignore_anycast a icmp_echo_ignore_multicast pro ignorování ICMP ECHO pro anycast a
multicast adresy. možnost omezit intenzitu zpracování ICMPv6 paketů; - Pro mesh protokol B.A.T.M.A.N. („Better Approach To Mobile Adhoc Networking“), který umožňuje vytvářet decentralizované sítě, kde je každý uzel propojen s okolními uzly, podpora překladu z multicast do unicast a také možnost správy přes sysfs;
- V ethtool byl přidán nový parametr Fast Link Down, který umožňuje zkrátit dobu oznámení o události odpojení linky pro 1000BaseT (běžně je zpoždění až 750ms);
- Přibyla vázání tunelů Foo-Over-UDP na určitou adresu, síťové rozhraní nebo socket (dříve bylo vázání prováděno pouze podle společné masky);
- V bezdrátovém stacku možnost realizovat obslužné rutiny
OWE (Opportunistic Wireless Encryption) v uživatelském prostoru; - V Netfilter byla do nat řetězců přidána podpora adresní rodiny inet (například nyní lze použít jedno pravidlo překladu pro zpracování ipv4 a ipv6, bez oddělování pravidel pro ipv4 a ipv6);
- V netlink strict pro přísnou kontrolu správnosti všech zpráv a atributů, v němž není povolen překročení očekávané velikosti atributů a je zakázáno přidávat dodatečná data na konec zpráv;
- Paměť a systémové služby
- Do systémového volání clone() byl přidán flag CLONE_PIDFD, který při uvedení vrací rodičovskému procesu файловý descriptor „pidfd“ spojený s vytvořeným podprocesem. Tento souborový descriptor lze například použít k odesílání signálů bez obavy, že dojde ke stavu závodu (ihned po odeslání signálu může být cílový PID uvolněn kvůli ukončení procesu a obsazen jiným procesem);
- Pro druhou verzi cgroups byla přidána funkčnost kontroléru freezer, díky kterému je možné zastavit činnost v cgroup a dočasně uvolnit některé prostředky (CPU, I/O a potenciálně i paměť) pro provádění dalších úloh. Správa se provádí prostřednictvím řídicích souborů cgroup.freeze a cgroup.events v hierarchii cgroup. Zápis 1 do cgroup.freeze zmrazí procesy v aktuálním cgroup a ve všech podgrupách. Vzhledem k tomu, že zmrazení vyžaduje určitou dobu, byl navíc nabídnut soubor cgroup.events, díky kterému lze zjistit, kdy operace skončila;
- export atributů paměti připojené k jednotlivým uzlům v sysfs, což umožňuje z uživatelského prostoru určit povahu zpracování bank paměti v systémech s heterogenní pamětí;
- Byla vylepšena subsystém PSI (Pressure Stall Information), který umožňuje analyzovat informace o čekací době na získání různých prostředků (CPU, paměť, I/O) pro specifické úkoly nebo sady procesů v cgroup. Díky PSI mohou obsluhy v uživatelském prostoru přesněji vyhodnotit úroveň zatížení systému a povahu zpomalení práce oproti Load Average. V nové verzi byla zajištěna podpora nastavení prahů citlivosti a možnost použít volání poll() k získání oznámení o aktivaci nastavených prahových hodnot za určité časové období. Tato možnost umožňuje organizovat v Androidu sledování nedostatku paměti v rané fázi, určit zdroj problémů a ukončit méně důležité aplikace, aniž by došlo k viditelným problémům pro uživatele. Při stresovém testování monitorovací nástroje spotřeby paměti založené na PSI prokázaly 10krát méně falešných zásahů ve srovnání se statistikou vmpressure;
- Byla provedena optimalizace kódu pro kontrolu programů BPF, která zrychluje kontrolu velkých programů až 20krát. Optimalizace umožnila zvýšit limit velikosti programů BPF z 4096 na milion instrukcí;
- Pro programy BPF možnost přístupu k globálním datům, což umožňuje definovat globální proměnné a konstanty v programech;
- Přidáno , což umožňuje z BPF programů řídit změny parametrů sysctl;
- Pro architekturu MIPS32 byl implementován JIT kompilátor pro virtuální stroj eBPF;
- Pro 32bitovou architekturu PowerPC byla přidána podpora ladicího nástroje KASan (Kernel address sanitizer), který zajišťuje odhalení chyb při práci s pamětí;
- Na systémech x86-64 bylo odstraněno omezení umístění dumpů stavu při havárii jádra (crash-dump) do oblastí paměti nad 896 MB;
- Pro architekturu s390 byla implementována podpora randomizace adresního prostoru jádra (KASLR) a možnost verifikace digitálních podpisů při spuštění jádra přes kexec_file_load();
- Pro architekturu PA-RISC byla přidána podpora ladicího jádra (KGDB), skokových značek a kprobes;
- Hardware
- Byl zahrnut ovladač pro GPU Mali 400/450, používaný v mnoha starých čipech na bázi architektury ARM. Pro novější GPU Mali byl přidán ovladač Panfrost, který podporuje čipy založené na mikroarchitekturách Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) a Bifrost (Mali G3x, G5x, G7x);
- Byla přidána podpora zvukových zařízení používajících otevřené firmware (). I přesto, že existují otevřené ovladače, kód firmwaru pro zvukové čipy byl stále uzavřen a dodáván v binární podobě. Projekt Sound Open Firmware byl vyvinut firmou Intel pro vytváření otevřených firmwarů pro DSP čipy související s zpracováním zvuku (později se na vývoji podílel také Google). V současné době jsou v rámci projektu připraveny otevřené firmwary pro zvukové čipy platforem Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake a IceLake;
- V DRM ovladači Intel (i915) byla přidána podpora čipů
Elkhartlake (Gen11). Byly přidány PCI identifikátory pro čipy Comet Lake (Gen9). Stabilizována podpora čipů Icelake, pro které byly také přidány další PCI identifikátory zařízení.
asynchronní režim přepínání mezi dvěma buffery ve video paměti (async flip) při provádění zápisových operací přes mmio, což významně zvýšilo výkon některých 3D aplikací (například výkon v testu 3DMark Ice Storm se zvýšil o 300-400%). Přidána podpora technologie (High-bandwidth Digital Content Protection) pro šifrování video signálu přenášeného přes HDMI; - V ovladači amdgpu pro GPU Vega20 podpora RAS (Reliability, Availability, Serviceability) a experimentální podpora subsystému SMU 11, který nahradil technologii Powerplay. Pro GPU Vega12 podpora režimu BACO (Bus Active, Chip Off). Přidána počáteční podpora XGMI, vysokorychlostní sběrnice (PCIe 4.0) pro spojení GPU. V ovladači amdkfd byly přidány chybějící identifikátory karet založených na GPU Polaris10;
- V ovladači Nouveau byla přidána podpora desek na bázi čipsetu NVIDIA Turing 117 (TU117, používá se v GeForce GTX 1650). V
kconfig nastavení pro deaktivaci zastaralých funkcí, které již nejsou aplikovány v aktuálních verzích libdrm; - V API DRM a ovladači amdgpu byla přidána podpora synchronizačních objektů "timeline", které umožňují obejít klasické zámky.
- Z větve staging byl do hlavní sestavy převeden ovladač vboxvideo pro virtuální GPU VirtualBox;
- Přidán ovladač aspeed pro GFX čip SoC ASPEED;
- Byla přidána podpora ARM SoC a desek 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á Nadace svobodného softwaru
varianta — , očištěného od prvků firmwaru a ovladačů obsahujících nesvobodné komponenty nebo části kódu, jejichž použití je omezeno výrobcem. V novém vydání je zahrnuto načítání souborů
Sound Open Firmware. Načítání blobů v ovladačích
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp a ucsi_ccg. Byla aktualizována logika čištění blobů v ovladačích a subsystémech ixp4xx, imx-sdma, amdgpu, nouveau a goya, stejně jako v dokumentaci k mikrokódu. Čištění blobů v ovladači r8822be bylo ukončeno kvůli jeho odstranění.
Zdroj: opennet.ru
