Utgivning av Linux-kÀrnan 6.9

Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds utgivningen av Linux-kÀrnan 6.9. Bland de mest anmÀrkningsvÀrda förÀndringarna finns: modulen dm-vdo för deduplicering och komprimering av blockenheter, direkt ÄtkomstlÀge för filer i FUSE, stöd för skapande av pidfd för individuella trÄdar, BPF-token mekanism, stöd för Rust pÄ ARM64-system, nedgradering av filsystemet Ext2 till förÄldrat, borttagning av den gamla NTFS-drivrutinen, stöd för Intel FRED-mekanismen.

Den nya versionen innehÄller 15680 korrigeringar frÄn 2106 utvecklare, storleken pÄ patchen Àr 54 MB (Àndringarna berör 11825 filer, 687954 kodrader har lagts till och 225344 kodrader har tagits bort). I den föregÄende versionen fanns 15641 korrigeringar frÄn 2018 utvecklare, storleken pÄ patchen var 44 MB. UngefÀr 42% av alla förÀndringar i 6.9 Àr relaterade till enhetsdrivrutiner, cirka 17% handlar om uppdatering av kod specifik för hÄrdvaruarkitekturer, 13% rör nÀtverksstacken, 7% har att göra med filsystem och 4% med interna kÀrnsystem.

Huvudnyheterna i kÀrnan 6.9:

  • Disksubsystem, in- och utmatning och filsystem
    • I Device Mapper (DM) har en ny hanterare dm-vdo (virtual data optimizer) lagts till, vilket gör det möjligt att skapa en virtuell blockenhet baserad pĂ„ befintliga blockenheter som erbjuder funktioner som deduplicering av upprepade data, komprimering av data, utelĂ€mnande av tomma block och ökning av blockenhetens storlek vid behov (thin provisioning). Dessa funktioner implementeras pĂ„ blockenhetsnivĂ„ och Ă€r oberoende av det anvĂ€nda filsystemet (till exempel kan dm-vdo implementera automatisk sammanslagning av duplicerade data och lagring av information i komprimerad form för alla filsystem). AnvĂ€ndning av dm-vdo stöds för fysiska lagringssystem med en storlek pĂ„ upp till 256 TB och skapande av logiska volymer upp till 4 PB. För hantering av vdo-partitioner rekommenderas att anvĂ€nda lvm. VDO-teknologin utvecklades av Permabit och blev öppen efter att företaget köptes upp av Red Hat 2017.
    • I FUSE-underdelen, som anvĂ€nds för att implementera filsystem i anvĂ€ndarutrymme, har en grundlĂ€ggande implementering av "passthrough"-lĂ€get lagts till, vilket möjliggör direkt Ă„tkomst till fildata pĂ„ kĂ€rnnivĂ„ utan att gĂ„ igenom processen som körs i anvĂ€ndarutrymme. Detta kan, i vissa situationer, avsevĂ€rt öka prestandan. Till exempel kan FUSE-implementationer av filsystem som arbetar i skrivskyddat lĂ€ge och begrĂ€nsar Ă„tkomst till filer returnera innehĂ„llet i filer frĂ„n det ursprungliga filsystemet utan att överföra dem till FUSE-processen.
    • Drivrutinen för filsystemet Ext2 har klassificerats som förĂ„ldrad (deprecated). Anledningen anges vara att drivrutinen endast stödjer 32-bitars tidsrĂ€knare i inode, som kommer att överflödas den 19 januari 2038. IstĂ€llet för ext2-drivrutinen rekommenderas att anvĂ€nda ext4-drivrutinen, som har stöd för Ext2-filsystemet och Ă€r helt kompatibel med det, men som ocksĂ„ kan anvĂ€nda tidsstĂ€mplar i ext2-partitioner som inte Ă€r pĂ„verkade av 2038-problemet om filsystemet skapats med inode-storlek större Ă€n 255 byte (i ext2-drivrutinen anvĂ€ndes 32-bitars tidsrĂ€knare oavsett inode-storlek).
    • Den gamla NTFS-filsystemdrivrutinen har tagits bort och har ersatts av den nya NTFS3-drivrutinen som kom med version 5.15. Leverans av tvĂ„ drivrutiner som implementerar NTFS i kĂ€rnan anses oklokt, med hĂ€nsyn till att den gamla drivrutinen inte har uppdaterats pĂ„ mĂ„nga Ă„r, Ă€r i ett bedrövligt skick och endast kan köras i lĂ€slĂ€ge.
    • I filsystemen zonefs och hugetlbfs har stöd för kartlĂ€ggning av anvĂ€ndaridentifierings-id för monterade filsystem lagts till, vilket anvĂ€nds för att associera filer av en viss anvĂ€ndare pĂ„ ett monterat annat partition med en annan anvĂ€ndare i det aktuella systemet.
    • För NFSv4 har administratörer fĂ„tt möjlighet att rensa öppnings- och lĂ„sningsstatusar för filer.
    • För Ext4-filsystemet noteras endast buggfixar och uppdatering av kunit-tester.
    • I Btrfs har översĂ€ttningen av funktioner till anvĂ€ndning av minnessidor (page folios) fortsatt.
    • I XFS-filsystemet har arbetet fortsatt med implementeringen av möjligheten att anvĂ€nda verktyget fsck för att kontrollera och Ă„tgĂ€rda identifierade problem i online-lĂ€ge, utan att demontera filsystemet.
    • Funktionen pwritev2() har fĂ„tt flaggan RWF_NOAPPEND, som gör det möjligt att ange en förskjutning för skrivning, Ă€ven om filen har öppnats i lĂ€get enbart för tillĂ€gg av data i slutet av filen.
    • Nya ioctl-kommandon har lagts till: FS_IOC_GETUUID – returnerar UUID-koden för det angivna filsystemet, och FS_IOC_GETFSSYSFSPATH – anger platsen i /sys/fs för det angivna monterade filsystemet.
    • Filssystemen efs, qnx4 och coda har övergĂ„tt till att anvĂ€nda det nya API:t för montering av partitioner.
    • Implementeringen av filoperationer som körs utan hĂ€nsyn till versaler har förbĂ€ttrats. Prestandan har ökat genom att först utföra en kĂ€nslig jĂ€mförelse och sedan gĂ„ tillbaka till att söka utan hĂ€nsyn till versaler. Problem vid montering av overlayfs ovanpĂ„ kataloger som har stĂ€llts in för att vara utan hĂ€nsyn till versaler har Ă„tgĂ€rdats.
  • Minne och systemtjĂ€nster
    • Stödet för Intel FRED (Flexible Return and Event Delivery) har implementerats, vilket Ă€r utformat för att öka effektiviteten och tillförlitligheten för leverans av information om lĂ„g-nivĂ„hĂ€ndelser jĂ€mfört med det nuvarande systemet IDT (Interrupt Descriptor Table). PrestandaförbĂ€ttringar och minskade fördröjningar uppnĂ„s genom att hĂ€ndelser Ă„terförs av processorinstruktionen IRET istĂ€llet för att levereras via IDT. Ökad tillförlitlighet uppnĂ„s genom separat hantering av hĂ€ndelseintrĂ€de i kĂ€rnkontext och anvĂ€ndarkontext, skydd mot inbĂ€ddad NMI-exekvering och bevarande av alla CPU-register relaterade till undantaget i den utvidgade stackramen.
    • Möjligheten att optimera Ă„tkomst till data för individuella CPU-kĂ€rnor har lagts till genom att anvĂ€nda namngivna adressutrymmen (Named Address Spaces) i kĂ€rnkoden, implementerade i GCC som en del av GNU C-förlĂ€ngningen.
    • Flaggan PIDFD_THREAD har lagts till i funktionen pidfd_open(), vilket gör det möjligt att skapa pidfd för enskilda trĂ„dar, istĂ€llet för att endast anvĂ€nda pidfd i sammanhanget för gruppens ledartrĂ„d. Det har ocksĂ„ föreslagits att implementera ett pseudo-filsystem för Ă„tkomst till pidfd genom det virtuella filsystemet. Till skillnad frĂ„n identifiering av processer med pid Ă€r pidfd-koden kopplad till en specifik process och Ă€ndras inte, medan PID efter att den aktuella processen har avslutats kan knytas till en annan process.
    • I BPF-subsystemen har en BPF-tokenmekanism lagts till, vilket gör att program kan delegera Ă„tkomstbehörigheter till privilegierade BPF-operationer selektivt; till exempel kan ett icke-privilegierat program ges tillgĂ„ng till vissa BPF-subsystem utan att ge fulla CAP_BPF-rĂ€ttigheter.
    • En ny typ av delad minne, bpf_arena, har lagts till i BPF-subsystemen, vilket definierar det omrĂ„de som Ă€r tillgĂ€ngligt för delning mellan BPF-program och processer i anvĂ€ndarutrymmet. Instruktionen may_goto har lagts till, vilket möjliggör loopar som kan avbrytas av verifieraren. Möjlighet att generera godtyckliga TCP SYN-cookies frĂ„n BPF-program har lagts till, samt skapande av BPF-handlers för att bekĂ€mpa SYN-flodattacker.
    • Arbetet med att föra över Ă€ndringar frĂ„n Rust-for-Linux-grenen fortsĂ€tter, kopplat till anvĂ€ndning av Rust som det andra sprĂ„ket för utveckling av drivrutiner och kĂ€rnmoduler (Rust-stöd Ă€r inte aktiverat som standard och gör inte Rust till ett obligatoriskt byggberoende för kĂ€rnan). Stöd för anvĂ€ndning av Rust med 64-bitars ARM-processorer har lagts till. ÖvergĂ„ng har gjorts till Rust-version 1.76. Makrot ‘container_of!’ har lagts till. IstĂ€llet för den instabila funktionen ‘ptr_metadata’ har den stabila metoden ‘byte_sub’ anvĂ€nts. Modulen ‘time’ med funktionen för tidskonvertering ‘msecs_to_jiffies()’ har lagts till.
    • Möjligheten att trunkera filer (ftruncate_file) har lagts till i io_uring-subsystemet.
    • En ny typ av arbetsköer, WQ_BH (workqueue Bottom Halves), har lagts till för asynkron exekvering av kod i kontexten av programvaruinterrupper, avsedd för anvĂ€ndning istĂ€llet för förĂ„ldrade tasklets.
    • Timerhanteringssystemet har omarbetats avsevĂ€rt, dĂ€r logiken för att vĂ€lja aktiv CPU-kĂ€rna för att utföra den utlösta timern har förbĂ€ttrats för att inte vĂ€cka inaktiva kĂ€rnor frĂ„n vilolĂ€ge.
    • Möjlighet att uppdatera processorns energimodell (EM, Energy Model) under drift har implementerats, vilket kan anvĂ€ndas för att ta hĂ€nsyn till effekten av arbetstemperaturen pĂ„ CPU:ns energieffektivitet. Funktionaliteten em_cpu_energy() har avsevĂ€rt förbĂ€ttrats, vilket nu körs 1,43 gĂ„nger snabbare i tester pĂ„ en stationĂ€r system och 1,69 gĂ„nger snabbare i tester pĂ„ RockPi 4B.
    • Stöd för körning av system baserade pĂ„ ARM64-arkitekturen har lagts till i LPA2-lĂ€get med 52-bitars virtuellt adressutrymme.
    • För ARM64-system har stöd för kontinuerlig PTE (Page Table Entry)-skrivning implementerats, vilket ökar prestandan genom att förbĂ€ttra effektiviteten i anvĂ€ndningen av TLB (Translation Lookaside Buffer).
    • Patchar har antagits för att förbĂ€ttra prestandan i minneshanteringssystemet genom att minska konkurrerande lĂ„s i vmalloc().
    • För LoongArch-arkitekturen har en mekanism för live patching av kĂ€rnan implementerats, vilket möjliggör tillĂ€mpning av korrigeringar pĂ„ kĂ€rnan utan omstart.
    • För RISC-V-system har stöd för systemanropet membarrier() implementerats, vilket sĂ€kerstĂ€ller minnesbarriĂ€rer för aktiva trĂ„dar i systemet.
    • Krav pĂ„ versionen av LLVM/Clang som kan anvĂ€ndas för att kompilera kĂ€rnan har höjts. Nu krĂ€vs minst version 13.0.1 av LLVM (tidigare stöddes kompilering med LLVM 11+).
    • Mekanismen 'User trace events', som gör det möjligt att skapa spĂ„rningsevents frĂ„n anvĂ€ndarprocesser för att övervaka aktiviteter i anvĂ€ndarutrymmet, har fĂ„tt stöd för export av hĂ€ndelseinformation i olika format (USER_EVENT_REG_MULTI_FORMAT).
    • I funkionsspĂ„rningsmekanismen har möjligheten att spĂ„ra tillstĂ„ndet av inparametrar vid utgĂ„ngsspringandet lagts till. VĂ€rdena frĂ„n return-operatorn kan nu matchas med parametrarna som anvĂ€ndes vid funktionsanropet.
    • I verktyget perf har stöd för lĂ€get för aggregatutsnitt 'cluster' ('perf stat -a —per-cluster') lagts till för att sammanfoga statistik för delade resurser. Möjlighet att anvĂ€nda libcapstone-biblioteket för disassemblering av processorinstruktioner ('perf script -F disasm') har ocksĂ„ implementerats. Optimeringar för minnesanvĂ€ndning har genomförts vid körning av kommandona perf report och perf annotate.
  • Virtualisering och sĂ€kerhet
    • Skydd mot RFDS (Register File Data Sampling) sĂ„rbarhet har lagts till i Intel Atom-processorer, vilket gör det möjligt att extrahera kvarvarande information frĂ„n registerfiler (RF, Register File) i processorn, vilka anvĂ€nds för att gemensamt lagra innehĂ„llet i registren för alla uppgifter pĂ„ samma CPU-kĂ€rna. För att blockera sĂ„rbarheten krĂ€vs en mikroprogramsuppdatering och anvĂ€ndning av instruktionen VERW för att rensa innehĂ„llet i mikroarkitekturella buffertar vid Ă„tergĂ„ng frĂ„n kĂ€rnan till anvĂ€ndarutrymmet. För att aktivera skyddet vid kĂ€rnstart kan flaggan "reg_file_data_sampling=on" anges. Information om sĂ„rbarhetens förekomst och tillgĂ„ng till nödvĂ€ndigt mikroprogram för att skydda kan bedömas i filen "/sys/devices/system/cpu/vulnerabilities/reg_file_data_sampling".
    • GrundlĂ€ggande stöd för skydd av gĂ€stsystem har lagts till med hjĂ€lp av AMD SEV-SNP (Secure Nested Paging) för att sĂ€kerstĂ€lla sĂ€ker hantering av inbĂ€ddade sidtabeller i minnet och skydda mot "undeSErVed" och "SEVerity" attacker pĂ„ AMD EPYC-processorer, vilket möjliggör omgĂ„else av skyddsmekanismen AMD SEV (Secure Encrypted Virtualization). KVM De nödvĂ€ndiga Ă€ndringarna för att anvĂ€nda SNP planeras att lĂ€ggas till i version 6.10.
    • Moduler med implementation av IMA (Integrity Measurement Architecture) och EVM (Extended Verification Module) har överförts till att anvĂ€nda LSM (Linux Security Modules) ramverket, vilket utan att tappa funktionalitet betydligt har förenklat koden, sammanfogat duplicerad funktionalitet och utnyttjat de tillgĂ€ngliga standardmöjligheterna via LSM. IMA-modulen Ă€r avsedd för att kontrollera integriteten hos operativsystemets komponenter genom digitala signaturer och hash-vĂ€rden. EVM-modulen skyddar utökade filattribut (xattrs) mot attacker som syftar till att Ă„sidosĂ€tta deras integritet (EVM kommer inte att tillĂ„ta offline-attacker dĂ€r en angripare kan Ă€ndra metadata, till exempel genom att starta frĂ„n sin egen lagringsenhet).
    • Systemanropen lsm_list_modules(), lsm_get_self_attr() och lsm_set_self_attr() har omarbetats för bĂ€ttre kompatibilitet med 32-bitarsmiljöer, som Ă€r avsedda för att lista laddade LSM-moduler (Linux Security Modules) och för att hĂ€mta/stĂ€lla in egenskaper för LSM-moduler. Ändringen bryter mot bakĂ„tkompatibiliteten, men eftersom de nya systemanropen lades till i den senaste kĂ€rnversionen och Ă€nnu inte anvĂ€nds i applikationer, ansĂ„g Linus Torvalds att Ă€ndringen var godtagbar.
    • Ett försök gjordes att Ă„teruppta anvĂ€ndningen av mekanismen UBSAN (Undefined Behavior Sanitizer). Problemet ligger i att kompilatorer hanterar heltalige överskridningar av tecknade och o-tecknade typer pĂ„ olika sĂ€tt. Tecknade överskridningar och överskridningar av pekare tillhör kategorin av odefinierat beteende, medan o-tecknade överskridningar hanteras pĂ„ ett modulĂ€rt sĂ€tt enligt 2n med endast de lĂ€gsta bitarna av resultatet bevarade ("wrap-around") och pĂ„verkas inte av odefinierat beteende. För att utesluta situationer som kan leda till odefinierat beteende kompileras kĂ€rnan med alternativet "-fno-strict-overflow", vilket leder till anvĂ€ndning av "wrap-around" för alla heltalige överskridningar. GCC och Clang kan inte korrekt diagnostisera vissa problem vid anvĂ€ndning av flaggan "-fno-strict-overflow", och aktiveringen av UBSAN syftar till ett samarbete med kompilatorutvecklarna för att eliminera falska positiva och identifiera heltalige överskridningar dĂ€r det saknas tydliga kontroller.

      För att kontrollera möjliga överskridningar i kÀrnan anvÀnds konstruktioner av typen "var + offset < var" (till exempel, "if (pgoff + (size > PAGE_SHIFT) < pgoff){..}"), som Àr kopplade till kompileringen med flaggan "-fno-strict-overflow" och tÀcker inte all kod dÀr en överskridning potentiellt kan intrÀffa. Problemet Àr att vid anvÀndning av UBSAN ledde sÄdana kontroller till ett stort antal falska varningar, vilket gjorde att UBSAN mÄste stÀngas av Är 2021. I den uppdaterade implementationen föreslÄs anvÀndning av speciella annotationer __signed_wrap och __unsigned_wrap, samt fÀrdiga makron med kontroller som add_would_overflow(a, b) och add_wrap(a, b), som möjliggör separation av utvecklarnas tillÄtna anvÀndning av heltalige överskridningar frÄn oavsiktliga överskridningar som kan leda till sÄrbarheter. Förslaget om en mer omfattande omarbetning av kÀrnan med introduktion av ytterligare typdefinitioner avvisades av Linus Torvalds.

  • NĂ€tverkssystemet
    • I det nĂ€tverksbaserade subsystemet har arbete genomförts för att minska förekomsten av konkurrerande lĂ„sning ("lock contention", ett försök att fĂ„ en lĂ„s som hĂ„lls av en annan trĂ„d). AnvĂ€ndningen av RTNL-lĂ„s har minskats.
    • möjligheten att aktivera stöd för aktiv polling av sockets (busy polling) i samband med individuella anrop av epoll. Storin och budgetparametrar kan stĂ€llas in separat frĂ„n systemets standardinstĂ€llningar.
    • en struktur för net_hotdata har implementerats för att öka effektiviteten av cache för de mest anvĂ€nda nĂ€tverkskonfigurationsvariablerna.
    • MPTCP har fĂ„tt stöd för att stĂ€lla in TCP_NOTSENT_LOWAT-alternativet för sockets, vilket gör det möjligt att begrĂ€nsa storleken pĂ„ sĂ€ndningsbuffer. I MCTP:s socket-API har stöd för nĂ€tverksidentifierare ("network ID") lagts till, vilket möjliggör anvĂ€ndning av flera icke-överlappande MCTP-nĂ€tverk pĂ„ en och samma vĂ€rd.
    • IPSec har fĂ„tt stöd för att omdirigera ICMP-meddelanden med felinformation (RFC 4301).
    • processen för att skanna rutter med utgĂ„nget liv har pĂ„skyndats.
    • XDP:s prestanda har förbĂ€ttrats genom att mer strikt undvika allokering av stora minnesblock.
    • möjligheten att bifoga metadata till netconsole-meddelanden har lagts till.
    • I Netfilter har det blivit tillĂ„tet att definiera tabeller frĂ„n anvĂ€ndarskiktet som kopplas till en styrande bakgrundsprocess och som inte tas bort automatiskt efter att anvĂ€ndarapplikationen har avslutats.
    • i nftables har tillĂ€gg av element till set-grupper med sammanfallande intervall pĂ„skyndats.
  • Utrustning
    • i i915-drivrutinen fortsĂ€tter arbetet med att implementera stöd för Intel LunarLake (Xe 2) chip. Nya PCI-identifikatorer för enheter baserade pĂ„ Intel Arrow Lake och Alder Lake N-chip har lagts till. För Displayport har stöd för tunneling (DP tunneling) och bandbreddsallokering (bandwidth allocation) lagts till. Fastboot-lĂ€get har aktiverats för alla plattformar. Stöd för felsökningsutskrift kopplat till specifika enheter har lagts till.
    • i AMDGPU-drivrutinen har förberedelser gjorts för att implementera stöd för GPU AMD RDNA3.5 och RDNA4. Stöd för ATHUB 4.1, LSDMA 7.0, JPEG DPG, IH 7.0, HDP 7.0, VCN 5.0, SMU 13.0.6, NBIO 7.11, SDMA 6.1, MMHUB 3.3, DCN 3.5.1, NBIF 6.3.1, VPE 6.1.1 och RAS ACA-ramverket har lagts till. En parameter har lagts till i kĂ€rnmodulen för freesync_video för att aktivera experimentellt stöd för optimering av vĂ€xling av videolĂ€gen med hjĂ€lp av teknik för adaptiv synkronisering FreeSync.
    • i Nouveau-drivrutinen har koden för bildskĂ€rmskontrollen översatts till att anvĂ€nda funktionen kmemdup().
    • Arbetet med DRM-drivrutinen (Direct Rendering Manager) Xe för GPU:er baserade pĂ„ Intel Xe-arkitekturen, som anvĂ€nds i grafikkort frĂ„n Intel i Arc-serien och integrerad grafik, har fortsatt, med början frĂ„n Tiger Lake-processorer.
    • DRM-drivrutinen för Mediatek MT8188 VDOSYS1-chip har lagts till.
    • InstĂ€llningar relaterade till videoundersystem har flyttats till sektionen CONFIG_VIDEO.
    • Stöd har lagts till för ARM64 SoC: Mediatek MT7981B (Filogic 820), MT7988A (Filogic 880), NXP i.MX8DXP, Renesas R8A779G2 (R-Car V4H ES2.0), R8A779H0 (R-Car V4M), TI J722S.
    • Stöd har lagts till för ARM-plattformar och enheter: Android-telefoner baserade pĂ„ Tegra30-chip, Chromebook-modeller baserade pĂ„ Mediatek MT8186, NAS, surfplattor och spelkonsoler baserade pĂ„ Rockchips RK35xx, White Hawk-kort baserade pĂ„ Renesas SoC, kort baserade pĂ„ Qualcomm SM8550 (Snapdragon 8 Gen 2), Apalis Evaluation Board, Sielaff i.MX6 Solo Board, Samsung Galaxy Tab 4 10.1 LTE.
    • Koden för ljudundersystemet ALSA har refaktorerats. Stöd har lagts till för ljudsystem frĂ„n Microchip SAM9x7, NXP i.MX95 och Qualcomm WCD939x. SoundWire-drivrutinen har fĂ„tt stöd för ASoC med ljudkoprocessorer frĂ„n AMD ACP 6.3, och för Intel-system har ett DSPless-lĂ€ge implementerats. Stöd för ytterligare ljudkodekar Cirrus HD har lagts till. I virtio-drivrutinen har hanteringen av ljudenheter förbĂ€ttrats.
    • Stöd för Ethernet-kontrollerna Marvell Octeon PCI Endpoint NIC VF och Intel E825-C 100G har lagts till.

Samtidigt har den latinamerikanska Stiftelsen för fri programvara bildat en version av det helt fria kĂ€rnan 6.9 — Linux-libre 6.9-gnu, rensad frĂ„n firmware och drivrutiner som innehĂ„ller icke-fria komponenter eller kodavsnitt vars anvĂ€ndning Ă€r begrĂ€nsad av tillverkaren. I utgĂ„van 6.9 har koden för att rensa blobbar i drivrutinerna amdgpu, ath12k, adreno, btusb och r8169 uppdaterats. Rensning av den nya drivrutinen ptp_fc3 har genomförts. Blobnamnen i dts-filer (devicetree) för Aarch64-arkitekturen har rensats. Problem med rensning av i915-drivrutinen som ledde till lĂ„sning under initialisering har Ă„tgĂ€rdats. Ändringar relaterade till hantering av blobbar som levereras i form av hexadecimala dumpningar har gjorts.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster