Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds kÀrnlansering . Bland de mest mÀrkbara förÀndringarna finns: Ext4-lÀget utan hÀnsyn till bokstavsstorlek, separata systemanrop för montering av filsystem, drivrutiner för GPU Mali 4xx/6xx/7xx, möjligheten att hantera förÀndringar av sysctl-vÀrden i BPF-program, modul för device-mapper dm-dust, skydd mot MDS-attacker, stöd för Sound Open Firmware för DSP, optimering av BFQ-prestanda, och att underhÄllsundersystemet PSI (Pressure Stall Information) har nÄtt en anvÀndbar nivÄ i Android.
I den nya versionen har 15100 korrigeringar gjorts av 1882 utvecklare,
patchstorleken Àr 62 MB (Àndringarna berör 30889 filer, med 625094 kodrader tillagda och 531864 rader borttagna). Cirka 45 % av de presenterade Àndringarna i 5.2
Àr relaterade till enhetsdrivrutiner, medan ungefÀr 21 % av Àndringarna har
att göra med uppdatering av kod specifik för hÄrdvaruarkitekturer, 12 %
kopplas till nĂ€tverksstacken, 3 % â filsystem och 3 % till interna
sammanhang relaterade till kĂ€rnans undersystem. 12,4 % av alla Ă€ndringar har förberetts av 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.
:
- Disksubsystem, in- och utmatning och filsystem
- För Ext4 har stöd för att arbeta utan hĂ€nsyn till bokstavsstorlek i filnamn lagts till, vilket aktiveras endast i koppling till specifika tomma kataloger med hjĂ€lp av den nya attributen â+Fâ (EXT4_CASEFOLD_FL). NĂ€r detta attribut har stĂ€llts in pĂ„ en katalog kommer alla operationer med filer och underkataloger inuti att utföras utan hĂ€nsyn till bokstavsstorlek, inklusive att storleken ignoreras vid sök- och öppningsoperationer (till exempel kommer filerna Test.txt, test.txt och test.TXT i sĂ„dana kataloger att betraktas som identiska). Som standard förblir filsystemet kĂ€nsligt för större och mindre bokstĂ€ver, förutom i kataloger med attributet âchattr +Fâ;
- Behandlingsfunktionerna för UTF-8-tecken i filnamn har enhetliggjorts, vilket tillÀmpas vid jÀmförelse- och normaliseringsoperationer;
- I XFS har en infrastruktur för övervakning av filsystemets tillstÄnd lagts till och en ny ioctl för att begÀra status för systemets funktionalitet. En experimentell funktion för att kontrollera pÄ flyg (online scrub) superblockets rÀknare har implementerats.
- En ny device-mapper-modul ââ har lagts till, vilket gör det möjligt att simulera utseendet av dĂ„liga block pĂ„ mediet eller fel vid lĂ€sning frĂ„n disken. Modulen förenklar felsökning och testning av applikationer och olika lagringssystem under potentiella fel.
- Betydande prestandaoptimering av BFQ I/O-schemat. Under hög belastning pÄ I/O har de föreslagna optimeringarna minska tiden för operationer som att starta applikationer med upp till 80%;
- En serie systemanrop för montering av filsystem har lagts till: , , , , och . Dessa systemanrop möjliggör separat hantering av olika faser av montering (hantera superblock, hÀmta information om FS, montera, fÀsta vid monteringspunkt), som tidigare utfördes med det allmÀnna systemanropet mount(). Separata anrop ger möjlighet att utföra mer komplexa monteringsscenarier och att utföra sÄdana operationer som omkonfigurering av superblock, aktivering av alternativ, Àndra monteringspunkt och flyttning till ett annat namnrymd. Dessutom möjliggör separat behandling en exakt bestÀmning av orsakerna till felkoder och att ange flera kÀllor för flerlagers FS, som overlayfs;
- En ny operation IORING_OP_SYNC_FILE_RANGE har lagts till i grÀnssnittet för asynkron I/O io_uring, vilket utför ÄtgÀrder motsvarande systemanropet , samt möjligheten att registrera eventfd med io_uring och fÄ meddelanden om slutförda operationer;
- För filsystemet CIFS har ioctl FIEMAP lagts till, vilket möjliggör effektiv matchning av omrÄden samt stöd för lÀgena SEEK_DATA och SEEK_HOLE;
- I FUSE-subsystemet API för hantering av datacaching;
- I Btrfs har implementeringen av qgroups optimerats och hastigheten för fsync-funktionerna för filer med flera hÄrda lÀnkar har ökat. Koden för dataintegritetskontroll har förbÀttrats, vilket nu tar hÀnsyn till potentiell skada pÄ information i RAM innan data skrivs till disk;
- I CEPH har stöd för export av snapshots via NFS lagts till;
- Implementeringen av NFSv4-montering i "soft" lÀge har förbÀttrats (vid fel pÄ serverÄtkomst i "soft" lÀge returneras felkoden omedelbart, medan i "hard" lÀge styrningen inte ÄtergÄr förrÀn FS:en blir tillgÀnglig igen eller tidsgrÀnsen gÄr ut). I den nya utgÄvan har en mer exakt hantering av tidsgrÀnser sÀkerstÀllts, ÄterstÀllningen efter fel har pÄskyndats och en ny monteringsoption "softerr" har lagts till, vilket tillÄter att Àndra felkoden (ETIMEDOUT) som returneras vid tidsgrÀnsövertrÀdelser;
- I API nfsdcld, utformat i för att spÄra statusen pÄ NFS-kunder, finns möjligheten att korrekt övervaka statusen av en NFS-server vid omstart. PÄ sÄ sÀtt kan demon nfsdcld nu fungera som hanterare för nfsdcltrack;
- För AFS emulering av byte range-lÄs i filer ();
- Virtualisering och sÀkerhet
- Arbete har gjorts för att ÄtgÀrda platser i kÀrnan som tillÄter exekvering av kod frÄn skrivbara reflekterande minnesomrÄden, vilket möjliggör blockering av potentiella sÄrbarheter som kan utnyttjas vid angrepp;
- En ny parameter för kÀrnkommandoraden "mitigations=", som ger ett förenklat sÀtt att hantera aktiveringen av olika skyddstekniker mot sÄrbarheter relaterade till spekulativ exekvering av instruktioner i CPU. Genom att ange "mitigations=off" stÀnger man av alla tillgÀngliga metoder, medan standardlÀget "mitigations=auto" aktiverar skydd, men pÄverkar inte anvÀndningen av Hyper Threading. LÀget "mitigations=auto,nosmt" stÀnger dessutom av Hyper Threading om det krÀvs av skyddstekniken.
- stöd för elektronisk digital signatur enligt GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), av Vitaly Chikunov frÄn "Bazalt SPO". I den inbyggda implementationen av TLS har stöd för AES128-CCM lagts till. Stöd för AEAD-algoritmer har lagts till i crypto_simd-modulen;
- I Kconfig finns en separat sektion "kernel hardening" med alternativ för att förstÀrka skyddet av kÀrnan. För nÀrvarande har den nya sektionen endast instÀllningar för att aktivera förstÀrkningskontroller via GCC-plugin-moduler;
- Koden i kÀrnan Àr nÀstan frÄn oavbrutna uttryck i switch (utan return eller break efter varje case-block). Det ÄterstÄr att ÄtgÀrda 32 av 2311 fall av denna anvÀndning av switch, efter vilket det kommer att vara möjligt att anvÀnda lÀget "-Wimplicit-fallthrough" vid kompilering av kÀrnan;
- För PowerPC-arkitekturen har stöd implementerats för hÄrdvaruanordningar som begrÀnsar oönskade ÄtkomstvÀgar frÄn kÀrnan till data i anvÀndarutrymmet;
- Kod för att blockera klassen MDS (Microarchitectural Data Sampling) i Intel-processorer har lagts till. För att kontrollera systemets sÄrbarhet kan man via SysFS-variabeln "/sys/devices/system/cpu/vulnerabilities/mds". TvÄ skyddsmetoder: en fullstÀndig, som krÀver en uppdaterad mikroprogramvara, och en alternativ, som inte fullt ut garanterar rensning av CPU:ns buffertar vid överföring av kontroll till anvÀndarutrymme eller gÀstsystem. För att hantera skyddsmetoder har en parameter "mds=" lagts till i kÀrnan, som kan ta vÀrdena "full", "full,nosmt" (med avstÀngning av Hyper-Threading) och "off";
- PÄ x86-64-system har skyddet "stack guard-page" lagts till för IRQ, felsökningsmekanismer och undantagshanterare, vilket innebÀr att en ersÀttning pÄ grÀnsen till stacken i minnessidor sÀtts in, dÀr Ätkomst leder till att ett undantag (page-fault) genereras;
- En sysctl-instÀllning vm.unprivileged_userfaultfd har lagts till, för att styra anvÀndningen av systemanropet userfaultfd() av icke-privilegierade processer;
- NĂ€tverkssystemet
- stöd för IPv6-gateways för IPv4-rutter. Till exempel kan nu routingregler av typen "ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0" anges;
- För ICMPv6 har ioctl-anropen icmp_echo_ignore_anycast och icmp_echo_ignore_multicast implementerats för att ignorera ICMP ECHO för anycast och
multicastadresser. möjlighet att begrÀnsa intensiteten för hantering av ICMPv6-paket; - För mesh-protokollet B.A.T.M.A.N. ("Better Approach To Mobile Adhoc Networking"), som möjliggör skapandet av decentraliserade nÀtverk dÀr varje nod Àr kopplad genom nÀrliggande noder, stöd för översÀttning frÄn multicast till unicast, samt möjlighet att styra genom sysfs;
- I ethtool har en ny parameter Fast Link Down lagts till, som möjliggör att tiden för mottagning av information om hÀndelsen av lÀnkavbrott för 1000BaseT minskas (under normala förhÄllanden kan fördröjningen vara upp till 750 ms);
- Det har kommit bindning av Foo-Over-UDP-tunnlar till en specifik adress, nÀtverksgrÀnssnitt eller socket (tidigare gjordes bindning endast baserat pÄ en gemensam mask);
- I det trÄdlösa stacken möjligheten att implementera hanterare
OWE (Opportunistic Wireless Encryption) i anvÀndarutrymmet; - I Netfilter har stöd för adressfamiljen inet lagts till i nat-kedjor (till exempel kan nu en enda översÀttningsregel anvÀndas för att hantera ipv4 och ipv6, utan att separera regler för ipv4 och ipv6);
- I netlink strict för noggrann kontroll av alla meddelanden och attribut, dÀr överskridande av förvÀntad storlek pÄ attribut Àr oacceptabelt och det Àr förbjudet att lÀgga till extra data i slutet av meddelandena;
- Minne och systemtjÀnster
- I systemanropet clone() har flaggan CLONE_PIDFD lagts till, vilket innebÀr att förÀldraprocessen fÄr en filbeskrivare "pidfd", som Àr kopplad till den skapade barnprocessen. Denna filbeskrivare kan till exempel anvÀndas för att skicka signaler utan att riskera en kapplöpning (omedelbart efter att signalen har skickats kan den mÄlinriktade PID:n frigöras pÄ grund av att processen avslutas och upptas av en annan process);
- Den andra versionen av cgroups har fÄtt funktionalitet i fryskontrollern, vilket gör det möjligt att stoppa arbetet i cgroup och tillfÀlligt frigöra vissa resurser (CPU, I/O och potentiellt Àven minne) för att utföra andra uppgifter. Hantering sker genom kontrollfilerna cgroup.freeze och cgroup.events i cgroup-trÀdet. Att skriva 1 i cgroup.freeze fryser processerna i den aktuella cgroup och alla barngrupper. Eftersom frysningen krÀver lite tid, har filen cgroup.events föreslagits för att fÄ reda pÄ nÀr operationen Àr klar;
- export av minnesattribut knutna till varje nod i sysfs, vilket gör det möjligt att frÄn anvÀndarutrymmet bestÀmma hur minnesbankerna hanteras i system med heterogen minne;
- PSI (Pressure Stall Information)-subsystemet har förbÀttrats, vilket gör det möjligt att analysera information om vÀntetider för att fÄ tillgÄng till olika resurser (CPU, minne, I/O) för specifika uppgifter eller processuppsÀttningar i cgroup. Genom PSI kan anvÀndarutrymmets hanterare bÀttre bedöma systemets belastningsnivÄ och arten av eventuell nedgÄng i prestanda jÀmfört med Load Average. Den nya versionen har stöd för att stÀlla in kÀnslighetströsklar och möjlighet att anvÀnda anropet poll() för att fÄ meddelande om att de uppsatta tröskelvÀrdena har nÄtts under en viss tidsperiod. Denna möjlighet möjliggör övervakning av minnesbrist i Android i ett tidigt skede, identifiering av problemm kÀllor och avslutning av oviktiga applikationer innan synliga problem uppstÄr för anvÀndaren. Vid stresstester har övervakningsverktygen för minnesanvÀndning baserade pÄ PSI visat sig ha 10 gÄnger fÀrre falska positiva jÀmfört med statistiken frÄn vmpressure;
- Kodoptimering har genomförts för att kontrollera BPF-program, vilket gör att stora program nu kan kontrollera upp till 20 gÄnger snabbare. Optimeringen har möjliggjort att grÀnsen för storleken pÄ BPF-program har höjts frÄn 4096 till en miljon instruktioner;
- För BPF-program möjligheten att fÄ tillgÄng till globala data, vilket gör det möjligt att definiera globala variabler och konstanter i programmen;
- Tillagd , vilket gör det möjligt att kontrollera Àndringar av sysctl-parametrar frÄn BPF-program;
- För MIPS32-arkitekturen har en JIT-kompilator implementerats för eBPF virtuella maskin;
- För 32-bitars PowerPC-arkitekturen har stödet för felsökningsverktyget KASan (Kernel address sanitizer) lagts till, vilket möjliggör upptÀckten av minnesfel;
- PÄ x86-64-system har begrÀnsningen för att placera crash-dumps pÄ minnesomrÄden över 896 MB tagits bort;
- För s390-arkitekturen har stöd för randomisering av kÀrnans adressutrymme (KASLR) och möjligheten att verifiera digitala signaturer vid kÀrnstart via kexec_file_load() implementerats;
- För PA-RISC-arkitekturen har stöd för kÀrnfelsökaren (KGDB), brytpunkter och kprobes lagts till;
- Utrustning
- I paketet ingÄr drivrutinen för GPU Mali 400/450, som anvÀnds i mÄnga Àldre chip baserade pÄ ARM-arkitekturen. För nyare GPU:er har en Panfrost-drivrutin lagts till, som stöder chip baserade pÄ mikroarkitekturerna Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) och Bifrost (Mali G3x, G5x, G7x);
- Stöd för ljudenheter som anvÀnder öppna firmware har lagts till (). Trots att öppna drivrutiner finns kvar har firmware-koden för ljudchip fortfarande varit stÀngd och levererats i binÀr form. Projektet Sound Open Firmware har utvecklats av Intel för att skapa öppna firmware för DSP-chip kopplade till ljudbehandling (senare anslöt sig Àven Google till utvecklingen). För nÀrvarande har projektet redan förberett öppna firmware för ljudchip pÄ plattformar frÄn Intel: Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake och IceLake;
- I Intel DRM-drivrutinen (i915) har stöd för chip
Elkhartlake (Gen11) lagts till. PCI-identifikatorer för chip frÄn Comet Lake (Gen9) har lagts till. Stödet för chip frÄn Icelake har stabiliserats, och ytterligare PCI-enhetsidentifierare har lagts till.
asynkron vÀxlingslÀge mellan tvÄ buffrar i videominne (async flip) vid skrivoperationer via mmio, vilket avsevÀrt förbÀttrade prestandan för vissa 3D-applikationer (till exempel ökade prestandan i 3DMark Ice Storm med 300-400%). Stöd för teknologin (High-bandwidth Digital Content Protection) för kryptering av videosignal som överförs via HDMI; - I drivrutinen amdgpu för GPU Vega20 stöd för RAS (Reliability, Availability, Serviceability) och experimentellt stöd för SMU 11-systemet, som ersatte Powerplay-teknologin. För GPU Vega12 stöd för BACO-lÀge (Bus Active, Chip Off). Inledande stöd för XGMI, en hög hastighetsbuss (PCIe 4.0) för att koppla samman GPU:er. I drivrutinen amdkfd har saknade identifieringsnummer för grafikkort baserade pÄ GPU Polaris10 lagts till;
- I drivrutinen Nouveau har stöd lagts till för kort baserade pÄ NVIDIA Turing 117-chipsetet (TU117, anvÀnds i GeForce GTX 1650). I
kconfig instÀllning för att stÀnga av förÄldrade funktioner som inte lÀngre anvÀnds i aktuella versioner av libdrm; - I API:et DRM och drivrutinen amdgpu har stöd lagts till för synkroniseringsobjekt "timeline", vilket möjliggör att undvika klassiska lÄs.
- FrÄn staging-grenen har drivrutinen vboxvideo för den virtuella GPU:n VirtualBox överförts till huvudgrenen;
- En drivrutin för aspeed har lagts till för GFX-chipet SoC ASPEED;
- Stöd har lagts till för ARM SoC och Intel Agilex-kort (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).
Samtidig Latinamerikansk Stiftelse för Fritt Programvara
en variant â , rensad frĂ„n firmware och drivrutiner som innehĂ„ller icke-fria komponenter eller kodbitomrĂ„den som Ă€r begrĂ€nsade av tillverkaren. I den nya utgĂ„van har laddning av filer
Sound Open Firmware. Laddning av blobbar har stÀngts av i drivrutinerna
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp och ucsi_ccg. Koden för att rensa blobbar i drivrutiner och subsystems ixp4xx, imx-sdma, amdgpu, nouveau och goya har uppdaterats, liksom dokumentationen för mikroprogrammet. Rensning av blobbar i drivrutinen r8822be har avslutats pÄ grund av dess borttagning.
KĂ€lla: opennet.ru
