{"id":115726,"date":"2024-05-13T13:52:06","date_gmt":"2024-05-13T11:52:06","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/reliz-yadra-linux-6-9"},"modified":"2024-05-13T13:52:06","modified_gmt":"2024-05-13T11:52:06","slug":"reliz-yadra-linux-6-9","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/news\/reliz-yadra-linux-6-9","title":{"rendered":"Wydanie j\u0105dra Linux 6.9","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Po dw\u00f3ch miesi\u0105cach prac, Linus Torvalds zaprezentowa\u0142 wydanie j\u0105dra Linux 6.9. Spo\u015br\u00f3d najwa\u017cniejszych zmian: modu\u0142 dm-vdo do deduplikacji i kompresji urz\u0105dze\u0144 blokowych, tryb dost\u0119pu do plik\u00f3w w FUSE, wsparcie dla tworzenia pidfd dla poszczeg\u00f3lnych w\u0105tk\u00f3w, mechanizm token\u00f3w BPF, wsparcie dla Rust na systemach ARM64, przekszta\u0142cenie systemu plik\u00f3w Ext2 w dzia\u0142aj\u0105cy archaicznie, usuni\u0119cie starego sterownika NTFS, wsparcie dla mechanizmu Intel FRED.        <\/p>\n<p>W nowej wersji wprowadzono 15680 poprawek od 2106 deweloper\u00f3w, rozmiar \u0142atki \u2014 54 MB (zmiany obejmowa\u0142y 11825 plik\u00f3w, dodano 687954 linijek kodu, usuni\u0119to 225344 linijek). W poprzednim wydaniu by\u0142o 15641 poprawka od 2018 deweloper\u00f3w, rozmiar \u0142atki \u2014 44 MB. Oko\u0142o 42% wszystkich zmian wprowadzonych w 6.9 dotyczy sterownik\u00f3w urz\u0105dze\u0144, oko\u0142o 17% zmian odnosi si\u0119 do aktualizacji kodu specyficznego dla architektur sprz\u0119towych, 13% dotyczy stosu sieciowego, 7% \u2014 system\u00f3w plik\u00f3w, a 4% z wewn\u0119trznymi podsystemami j\u0105dra.      <\/p>\n<p>G\u0142\u00f3wne nowo\u015bci w j\u0105drze 6.9:  <\/p>\n<ul>\n<li class=\"l\"> <b>Podsystem dyskowy, wej\u015bcie\/wyj\u015bcie i systemy plik\u00f3w<\/b>\n<ul>\n<li class=\"l\"> W Device Mapper (DM) dodano nowy przetwornik dm-vdo (virtual data optimizer), umo\u017cliwiaj\u0105cy, na podstawie istniej\u0105cych urz\u0105dze\u0144 blokowych, utworzenie wirtualnego urz\u0105dzenia blokowego, kt\u00f3re oferuje takie mo\u017cliwo\u015bci, jak deduplikacja powtarzaj\u0105cych si\u0119 danych, kompresja danych, eliminacja pustych blok\u00f3w oraz zwi\u0119kszanie rozmiaru urz\u0105dzenia blokowego w miar\u0119 pojawiaj\u0105cej si\u0119 potrzeby (thin provisioning). Wskazane mo\u017cliwo\u015bci s\u0105 realizowane na poziomie urz\u0105dzenia blokowego i nie zale\u017c\u0105 od u\u017cywanego systemu plik\u00f3w (na przyk\u0142ad, przy u\u017cyciu dm-vdo mo\u017cna zrealizowa\u0107 automatyczne \u0142\u0105czenie dubluj\u0105cych si\u0119 danych i przechowywanie informacji w skompresowanej formie dla dowolnych system\u00f3w plik\u00f3w). Wspierane jest wykorzystanie dm-vdo dla fizycznych magazyn\u00f3w o rozmiarze do 256 TB oraz tworzenie logicznych wolumin\u00f3w o rozmiarze do 4 PB. Do zarz\u0105dzania partycjami vdo zaleca si\u0119 u\u017cywanie lvm. Technologia VDO zosta\u0142a opracowana przez firm\u0119 Permabit i otwarta po jej przej\u0119ciu przez Red Hat w 2017 roku.\n<li class=\"l\"> W podsystemie FUSE, stosowanym do realizacji system\u00f3w plik\u00f3w w przestrzeni u\u017cytkownika, dodano pocz\u0105tkow\u0105 implementacj\u0119 trybu \u201epassthrough\u201d, kt\u00f3ry pozwala na bezpo\u015brednie pozyskiwanie danych plik\u00f3w na poziomie j\u0105dra, omijaj\u0105c proces dzia\u0142aj\u0105cy w przestrzeni u\u017cytkownika, co w niekt\u00f3rych sytuacjach znacznie zwi\u0119ksza wydajno\u015b\u0107. Na przyk\u0142ad, implementacje FUSE system\u00f3w plik\u00f3w dzia\u0142aj\u0105ce w trybie tylko do odczytu i ograniczaj\u0105ce dost\u0119p do plik\u00f3w mog\u0105 dostarcza\u0107 zawarto\u015b\u0107 plik\u00f3w z oryginalnego systemu plik\u00f3w bez ich przesy\u0142ania do procesu FUSE.\n<li class=\"l\"> Do kategorii przestarza\u0142ych (deprecated) przeniesiono sterownik implementacji systemu plik\u00f3w Ext2. Jako pow\u00f3d podano wsparcie w sterowniku tylko 32-bitowych licznik\u00f3w czasu w inode, kt\u00f3re przepe\u0142ni\u0105 si\u0119 19 stycznia 2038 roku. Zamiast sterownika ext2 zaleca si\u0119 u\u017cycie sterownika ext4, kt\u00f3ry obs\u0142uguje prac\u0119 z systemem plik\u00f3w Ext2 i jest z nim ca\u0142kowicie zgodny, ale mo\u017ce u\u017cywa\u0107 w podzia\u0142ach ext2 znacznik\u00f3w czasu, kt\u00f3re nie s\u0105 nara\u017cone na problem 2038 roku, je\u015bli system plik\u00f3w zosta\u0142 utworzony z inode o rozmiarze wi\u0119kszym ni\u017c 255 bajt\u00f3w (w sterowniku ext2 32-bitowe liczniki czasu by\u0142y u\u017cywane niezale\u017cnie od rozmiaru inode).\n<li class=\"l\"> Usuni\u0119to stary sterownik systemu plik\u00f3w NTFS, kt\u00f3rego miejsce zaj\u0105\u0142 nowy sterownik NTFS3, dost\u0119pny od wersji 5.15. Dostarczanie w j\u0105drze dw\u00f3ch sterownik\u00f3w z implementacj\u0105 NTFS uznano za niecelowe, bior\u0105c pod uwag\u0119, \u017ce stary sterownik nie by\u0142 aktualizowany od wielu lat, jest w op\u0142akanym stanie i mo\u017ce dzia\u0142a\u0107 tylko w trybie do odczytu.\n<li class=\"l\"> W systemach plik\u00f3w zonefs i hugetlbfs dodano wsparcie dla mapowania identyfikator\u00f3w u\u017cytkownik\u00f3w zamontowanych system\u00f3w plik\u00f3w, stosowanego dowi\u0105zywania plik\u00f3w okre\u015blonego u\u017cytkownika w zamontowanej obcej partycji z innym u\u017cytkownikiem w obecnym systemie.\n<li class=\"l\"> W NFSv4 udost\u0119pniono administratorom mo\u017cliwo\u015b\u0107 czyszczenia stan\u00f3w otwarcia i blokady plik\u00f3w.\n<li class=\"l\"> W systemie plik\u00f3w Ext4 odnotowano jedynie poprawki b\u0142\u0119d\u00f3w oraz aktualizacj\u0119 test\u00f3w kunit.\n<li class=\"l\"> W Btrfs kontynuowano przenoszenie funkcji do wykorzystania foliant\u00f3w stron pami\u0119ci (page folios).\n<li class=\"l\">  W systemie plik\u00f3w XFS kontynuowane s\u0105 prace nad implementacj\u0105 mo\u017cliwo\u015bci u\u017cycia narz\u0119dzia fsck do sprawdzania i naprawy wykrytych problem\u00f3w w trybie online, bez odmontowywania systemu plik\u00f3w.\n<li class=\"l\"> Do wywo\u0142ania systemowego pwritev2() dodano flag\u0119 RWF_NOAPPEND, kt\u00f3ra pozwala na wskazanie przesuni\u0119cia do zapisu, nawet je\u015bli plik zosta\u0142 otwarty w trybie tylko do dodawania danych na ko\u0144cu pliku.\n<li class=\"l\"> Dodane nowe polecenia ioctl: FS_IOC_GETUUID \u2014 zwraca identyfikator UUID wskazanej przestrzeni dyskowej, oraz FS_IOC_GETFSSYSFSPATH \u2014 okre\u015bla lokalizacj\u0119 w \/sys\/fs danej zamontowanej FS.\n<li class=\"l\"> Systemy plik\u00f3w efs, qnx4 i coda zosta\u0142y przekszta\u0142cone do u\u017cywania nowego API montowania partycji.\n<li class=\"l\"> Udoskonalono realizacj\u0119 operacji na plikach wykonywanych w trybie bez rozr\u00f3\u017cnienia wielko\u015bci liter. Zwi\u0119kszono wydajno\u015b\u0107 dzi\u0119ki wst\u0119pnemu por\u00f3wnaniu z uwzgl\u0119dnieniem wielko\u015bci liter i powrotem do wyszukiwania bez rozr\u00f3\u017cnienia wielko\u015bci liter. Rozwi\u0105zano problemy podczas montowania overlayfs na katalogach, dla kt\u00f3rych ustawiony zosta\u0142 tryb bez rozr\u00f3\u017cnienia wielko\u015bci liter.                  <\/ul>\n<li class=\"l\"> <b>Pami\u0119\u0107 i us\u0142ugi systemowe<\/b>\n<ul>\n<li class=\"l\"> Wdro\u017cono wsparcie dla mechanizmu Intel FRED (Flexible Return and Event Delivery), zaprojektowanego w celu zwi\u0119kszenia efektywno\u015bci i niezawodno\u015bci dostarczania informacji o niskopoziomowych zdarzeniach, w por\u00f3wnaniu z obecnie stosowanym mechanizmem IDT (Interrupt Descriptor Table). Zwi\u0119kszenie wydajno\u015bci i redukcja op\u00f3\u017anie\u0144 s\u0105 mo\u017cliwe dzi\u0119ki zwracaniu zdarze\u0144 instrukcj\u0105 procesora IRET zamiast przesy\u0142ania zdarze\u0144 przez tabel\u0119 IDT. Niezawodno\u015b\u0107 jest zwi\u0119kszona dzi\u0119ki oddzielnemu przetwarzaniu przychodz\u0105cego zdarzenia w kontek\u015bcie j\u0105dra oraz w kontek\u015bcie u\u017cytkownika, ochronie przed zagnie\u017cd\u017conym wykonywaniem NMI oraz przechowywaniu w rozszerzonej ramce stosu wszystkich rejestr\u00f3w CPU zwi\u0105zanych z wyj\u0105tkiem.\n<li class=\"l\"> Dodano mo\u017cliwo\u015b\u0107 optymalizacji dost\u0119pu do danych poszczeg\u00f3lnych rdzeni CPU poprzez wykorzystanie w kodzie j\u0105dra nazwanych przestrzeni adresowych (Named Address Spaces), zaimplementowanych w GCC jako rozszerzenie GNU C.\n<li class=\"l\"> Do funkcji pidfd_open() dodano flag\u0119 PIDFD_THREAD, kt\u00f3ra umo\u017cliwia tworzenie pidfd dla poszczeg\u00f3lnych w\u0105tk\u00f3w, a nie tylko u\u017cywanie pidfd w kontek\u015bcie lidera grupy w\u0105tk\u00f3w. Zaproponowano r\u00f3wnie\u017c realizacj\u0119 pseudo-FS do uzyskania dost\u0119pu do pidfd przez wirtualny system plik\u00f3w. W przeciwie\u0144stwie do identyfikacji proces\u00f3w za pomoc\u0105 pid, identyfikator pidfd jest zwi\u0105zany z konkretnym procesem i nie zmienia si\u0119, podczas gdy PID po zako\u0144czeniu bie\u017c\u0105cego procesu mo\u017ce by\u0107 przypisany do innego procesu.\n<li class=\"l\"> W podsystemie BPF dodano mechanizm token\u00f3w BPF, kt\u00f3ry umo\u017cliwia wybi\u00f3rcze delegowanie aplikacjom praw dost\u0119pu do uprzywilejowanych operacji BPF, na przyk\u0142ad mo\u017cna przyzna\u0107 aplikacji bez uprawnie\u0144 dost\u0119p do pojedynczych podsystem\u00f3w BPF bez nadawania pe\u0142nych praw CAP_BPF.\n<li class=\"l\"> W podsystemie BPF dodano nowy typ pami\u0119ci dzielonej bpf_arena, definiuj\u0105cy obszar dost\u0119pny do wsp\u00f3\u0142dzielenia przez programy BPF i procesy w przestrzeni u\u017cytkownika. Dodano instrukcj\u0119 may_goto, kt\u00f3ra umo\u017cliwia organizacj\u0119 pracy p\u0119tli, kt\u00f3re mog\u0105 by\u0107 przerywane przez weryfikator. Dodano mo\u017cliwo\u015b\u0107 generowania z program\u00f3w BPF losowych ciasteczek TCP SYN i tworzenia  BPF-obs\u0142ugiwaczy do walki z SYN flood.\n<li class=\"l\"> Kontynuowano przenoszenie zmian z ga\u0142\u0119zi Rust-for-Linux zwi\u0105zanych z u\u017cywaniem j\u0119zyka Rust jako drugiego j\u0119zyka do rozwijania sterownik\u00f3w i modu\u0142\u00f3w j\u0105dra (wsparcie dla Rust nie jest domy\u015blnie aktywne i nie prowadzi do w\u0142\u0105czenia Rust jako obowi\u0105zkowej zale\u017cno\u015bci do budowy j\u0105dra). Dodano wsparcie dla u\u017cycia j\u0119zyka Rust w pracy na 64-bitowych procesorach ARM. Zrealizowano przej\u015bcie na wersj\u0119 Rust 1.76. Dodano makro 'container_of!'. Zamiast niestabilnej funkcjonalno\u015bci 'ptr_metadata' wprowadzono stabiln\u0105 metod\u0119 'byte_sub'. Dodano modu\u0142 'time' z funkcj\u0105 konwersji czasu 'msecs_to_jiffies()'.\n<li class=\"l\"> W podsystemie io_uring dodano mo\u017cliwo\u015b\u0107 skracania plik\u00f3w (ftruncate_file).\n<li class=\"l\"> Dodano nowy typ kolejek roboczych WQ_BH (workqueue Bottom Halves) do asynchronicznego wykonywania kodu w kontek\u015bcie przerwa\u0144 programowych, maj\u0105cy na celu zast\u0105pienie przestarza\u0142ych tasklet\u00f3w.\n<li class=\"l\"> Znacz\u0105co przebudowano podsystem zarz\u0105dzania timerami, w kt\u00f3rym poprawiono logik\u0119 wyboru aktywnego rdzenia CPU do wykonania aktywnego timera, aby nie wybudza\u0107 z trybu u\u015bpienia nieaktywnych rdzeni.\n<li class=\"l\"> Wdra\u017cono mo\u017cliwo\u015b\u0107 aktualizacji modelu zu\u017cycia energii j\u0105dra (EM, Energy Model) w czasie rzeczywistym, co mo\u017ce by\u0107 wykorzystywane, na przyk\u0142ad, do uwzgl\u0119dnienia wp\u0142ywu temperatury roboczej na efektywno\u015b\u0107 energetyczn\u0105 CPU. Zdecydowanie zwi\u0119kszono wydajno\u015b\u0107 funkcji em_cpu_energy(), kt\u00f3ra w testach na stacjonarnym systemie teraz dzia\u0142a szybciej 1,43 razy, a w te\u015bcie na p\u0142ycie RockPi 4B \u2013 1,69 razy.\n<li class=\"l\"> Dodano wsparcie dla uruchamiania system\u00f3w opartych na architekturze ARM64 w trybie LPA2 z 52-bitow\u0105 przestrzeni\u0105 adresow\u0105.\n<li class=\"l\"> Dla system\u00f3w ARM64 wprowadzono wsparcie dla ci\u0105g\u0142ych wpis\u00f3w PTE (Page Table Entry), co pozwala na zwi\u0119kszenie wydajno\u015bci poprzez popraw\u0119 efektywno\u015bci wykorzystania TLB (Translation Lookaside Buffer).\n<li class=\"l\"> Zaakceptowano \u0142atki poprawiaj\u0105ce wydajno\u015b\u0107 podsystemu zarz\u0105dzania pami\u0119ci\u0105 poprzez zmniejszenie wyst\u0119powania konkurencyjnych blokad w vmalloc().\n<li class=\"l\"> Dla architektury LoongArch wdro\u017cono mechanizm gor\u0105cego nak\u0142adania poprawek na j\u0105dro (live patching), umo\u017cliwiaj\u0105cy stosowanie poprawek do j\u0105dra bez przerywania pracy.\n<li class=\"l\"> Dla system\u00f3w RISC-V wprowadzono obs\u0142ug\u0119 wywo\u0142ania systemowego membarrier(), kt\u00f3re zapewnia ustalanie barier pami\u0119ci dla pracuj\u0105cych w systemie w\u0105tk\u00f3w.\n<li class=\"l\"> Podniesiono wymagania dotycz\u0105ce wersji LLVM\/Clang, kt\u00f3rej mo\u017cna u\u017cywa\u0107 do kompilacji j\u0105dra. Do kompilacji wymagany jest teraz co najmniej wersja LLVM 13.0.1 (wcze\u015bniej wspierana by\u0142a kompilacja w LLVM 11+).\n<li class=\"l\"> W mechanizmie \u201eUser trace events\u201d, kt\u00f3ry umo\u017cliwia tworzenie zdarze\u0144 \u015bledzenia z proces\u00f3w u\u017cytkownika w celu monitorowania aktywno\u015bci w przestrzeni u\u017cytkownika, dodano wsparcie dla eksportowania informacji o zdarzeniu w r\u00f3\u017cnych formatach (USER_EVENT_REG_MULTI_FORMAT).\n<li class=\"l\"> W mechanizmie \u015bledzenia wywo\u0142a\u0144 funkcji dodano mo\u017cliwo\u015b\u0107 monitorowania stanu wchodz\u0105cych argument\u00f3w funkcji podczas \u015bledzenia powrotu z funkcji. Warto\u015bci operatora return mo\u017cna teraz powi\u0105za\u0107 z argumentami u\u017cytymi przy wywo\u0142aniu funkcji.\n<li class=\"l\"> Do narz\u0119dzia perf dodano wsparcie dla trybu agregacji wynik\u00f3w \u201ecluster\u201d (\u201eperf stat -a \u2014per-cluster\u201d) w celu \u0142\u0105czenia statystyk zasob\u00f3w wsp\u00f3\u0142dzielonych. Zrealizowano mo\u017cliwo\u015b\u0107 wykorzystania biblioteki libcapstone do disassemblacji instrukcji procesora (\u201eperf script -F disasm\u201d). Wprowadzono optymalizacje zu\u017cycia pami\u0119ci podczas wykonywania polece\u0144 perf report i perf annotate.                    <\/ul>\n<li class=\"l\"> <b>Wirtualizacja i bezpiecze\u0144stwo<\/b>\n<ul>\n<li class=\"l\"> Dodano zabezpieczenie przed luk\u0105 RFDS (Register File Data Sampling) w procesorach Intel Atom, pozwalaj\u0105ce na wydobycie resztkowych informacji z plik\u00f3w rejestr\u00f3w (RF, Register File) procesora, kt\u00f3re s\u0105 u\u017cywane do wsp\u00f3lnego przechowywania zawarto\u015bci rejestr\u00f3w we wszystkich zadaniach na tym samym rdzeniu CPU. Aby zablokowa\u0107 luk\u0119, wymagane jest zaktualizowanie mikrokodu oraz u\u017cycie instrukcji VERW do wyczyszczenia zawarto\u015bci bufor\u00f3w mikroarchitektonicznych w momencie powrotu z rdzenia do przestrzeni u\u017cytkownika. Aby w\u0142\u0105czy\u0107 zabezpieczenie przy \u0142adowaniu j\u0105dra, mo\u017cna poda\u0107 flag\u0119 &#171;reg_file_data_sampling=on&#187;. Informacje o podatno\u015bci na luk\u0119 i dost\u0119pno\u015bci potrzebnego do zabezpieczenia mikrokodu mo\u017cna oceni\u0107 w pliku &#171; \/sys\/devices\/system\/cpu\/vulnerabilities\/reg_file_data_sampling&#187;.\n<li class=\"l\"> Dodano podstawowe wsparcie dla zabezpieczenia system\u00f3w go\u015bcinnych za pomoc\u0105 rozszerzenia AMD SEV-SNP (Secure Nested Paging), kt\u00f3re zapewnia bezpieczn\u0105 obs\u0142ug\u0119 zagnie\u017cd\u017conych tabel stron pami\u0119ci i chroni przed atakami &#171;undeSErVed&#187; i &#171;SEVerity&#187; na procesory AMD EPYC, kt\u00f3re pozwalaj\u0105 obej\u015b\u0107 mechanizm zabezpiecze\u0144 AMD SEV (Secure Encrypted Virtualization). W <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/pl\/vps\/abuzoustojchivye-vps\/\"   title=\"KVM\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"4384\">KVM<\/a> niezb\u0119dne do wykorzystania SNP zmiany planowane s\u0105 do dodania w ga\u0142\u0119zi 6.10.\n<li class=\"l\"> Modu\u0142y z implementacj\u0105 technologii IMA (Integrity Measurement Architecture) i EVM (Extended Verification Module) zosta\u0142y przekszta\u0142cone na u\u017cycie frameworka LSM (Linux Security Modules), co bez utraty funkcjonalno\u015bci pozwoli\u0142o znacznie upro\u015bci\u0107 kod, po\u0142\u0105czy\u0107 powtarzaj\u0105c\u0105 si\u0119 funkcjonalno\u015b\u0107 i wykorzysta\u0107 dost\u0119pne przez LSM typowe mo\u017cliwo\u015bci. Modu\u0142 IMA ma na celu weryfikacj\u0119 integralno\u015bci komponent\u00f3w systemu operacyjnego na podstawie podpis\u00f3w cyfrowych i skr\u00f3t\u00f3w. Modu\u0142 EVM pozwala zabezpieczy\u0107 rozszerzone atrybuty plik\u00f3w (xattrs) przed atakami, kt\u00f3re maj\u0105 na celu naruszenie ich integralno\u015bci (EVM nie pozwoli przeprowadzi\u0107 ataku offline, w kt\u00f3rym napastnik m\u00f3g\u0142by zmieni\u0107 metadane, na przyk\u0142ad rozruchuj\u0105c ze swojego no\u015bnika).\n<li class=\"l\"> Przerobiono dla wi\u0119kszej kompatybilno\u015bci z 32-bitowymi \u015brodowiskami wywo\u0142ania systemowe lsm_list_modules(), lsm_get_self_attr() i lsm_set_self_attr(), przeznaczone do wy\u015bwietlania listy za\u0142adowanych modu\u0142\u00f3w LSM (Linux Security Modules) oraz uzyskiwania\/wystawiania atrybut\u00f3w modu\u0142u LSM. Zmiana narusza wsteczn\u0105 zgodno\u015b\u0107, ale poniewa\u017c nowe wywo\u0142ania systemowe zosta\u0142y dodane w poprzednim wydaniu j\u0105dra i na razie nie s\u0105 u\u017cywane w aplikacjach, Linus Torvalds uzna\u0142, \u017ce zmiana jest dopuszczalna.\n<li class=\"l\"> Podj\u0119to pr\u00f3b\u0119 wznowienia korzystania z mechanizmu UBSAN (Undefined Behavior Sanitizer). Sedno problemu polega na tym, \u017ce kompilatory r\u00f3\u017cnie obs\u0142uguj\u0105 przepe\u0142nienia liczb ca\u0142kowitych typ\u00f3w znaku i bez znaku. Przepe\u0142nienia znakowe i przepe\u0142nienia wska\u017anik\u00f3w nale\u017c\u0105 do kategorii nieokre\u015blonego zachowania, podczas gdy przepe\u0142nienia bezznakowe s\u0105 ograniczane przez modu\u0142 2n, zachowuj\u0105c jedynie najm\u0142odsze bity wyniku (\"wrap-around\") i nie podlegaj\u0105 nieokre\u015blonemu zachowaniu. Aby wykluczy\u0107 sytuacje zwi\u0105zane z wyst\u0105pieniem nieokre\u015blonego zachowania, j\u0105dro jest kompilowane z opcj\u0105 \"-fno-strict-overflow\", co prowadzi do u\u017cywania \"wrap-around\" dla wszystkich przepe\u0142nie\u0144 liczb ca\u0142kowitych. GCC i Clang nie potrafi\u0105 prawid\u0142owo diagnozowa\u0107 niekt\u00f3rych problem\u00f3w przy u\u017cyciu flagi \"-fno-strict-overflow\", a w\u0142\u0105czenie UBSAN ma na celu wsp\u00f3lne z programistami kompilator\u00f3w usuni\u0119cie powstaj\u0105cych fa\u0142szywych alarm\u00f3w oraz identyfikacj\u0119 przepe\u0142nie\u0144 w miejscach, gdzie brak jest wyra\u017anych sprawdze\u0144.\n<p>Do sprawdzania mo\u017cliwych przepe\u0142nie\u0144 w j\u0105drze u\u017cywane s\u0105 konstrukcje typu \"var + offset <var> PAGE_SHIFT) &lt; pgoff){..}&quot;), kt\u00f3re s\u0105 zwi\u0105zane z kompilacj\u0105 z flag\u0105 &quot;-fno-strict-overflow&quot; i nie obejmuj\u0105 ca\u0142ego kodu, w kt\u00f3rym potencjalnie mo\u017ce wyst\u0105pi\u0107 przepe\u0142nienie. Problem polega na tym, \u017ce przy u\u017cyciu UBSAN takie sprawdzenia prowadzi\u0142y do generowania du\u017cej liczby fa\u0142szywych ostrze\u017ce\u0144, co spowodowa\u0142o, i\u017c w 2021 roku UBSAN musia\u0142o zosta\u0107 wy\u0142\u0105czone. W zaktualizowanej implementacji proponuje si\u0119 u\u017cycie specjalnych adnotacji __signed_wrap i __unsigned_wrap, a tak\u017ce gotowych makr z procedurami sprawdzaj\u0105cymi add_would_overflow(a, b) i add_wrap(a, b), kt\u00f3re pozwalaj\u0105 oddzieli\u0107 zamierzone przez programist\u00f3w wykorzystanie przepe\u0142nie\u0144 liczb ca\u0142kowitych od wyst\u0119powania przypadkowych przepe\u0142nie\u0144, kt\u00f3re mog\u0105 prowadzi\u0107 do luk w zabezpieczeniach. Propozycja bardziej rozleg\u0142ej przer\u00f3bki j\u0105dra z wprowadzeniem dodatkowych definicji typ\u00f3w zosta\u0142a odrzucona przez Linusa Torvaldsa.                      <\/ul>\n<li class=\"l\"> <b>Subsystem sieciowy<\/b>\n<ul>\n<li class=\"l\">  W systemie sieciowym podj\u0119to dzia\u0142ania maj\u0105ce na celu zmniejszenie wyst\u0119powania konkurencyjnych blokad (\"lock contention\", pr\u00f3ba uzyskania blokady, kt\u00f3ra jest utrzymywana przez inny w\u0105tek). Zredukowano u\u017cycie blokad RTNL.\n<li class=\"l\"> Dodano wsparcie dla aktywnego polowania na gniazda (busy polling) w kontek\u015bcie poszczeg\u00f3lnych wywo\u0142a\u0144 epoll. Rozmiar puli i parametry bud\u017cetowe mog\u0105 by\u0107 ustawiane niezale\u017cnie od domy\u015blnych parametr\u00f3w systemowych.\n<li class=\"l\"> Zrealizowano struktur\u0119 net_hotdata w celu zwi\u0119kszenia efektywno\u015bci buforowania najcz\u0119\u015bciej u\u017cywanych zmiennych konfiguracji sieciowej.\n<li class=\"l\"> W MPTCP dodano wsparcie do ustawiania opcji TCP_NOTSENT_LOWAT dla gniazd, co pozwala ograniczy\u0107 rozmiar bufora wysy\u0142ania. W API dla gniazd MCTP dodano wsparcie identyfikator\u00f3w sieci (&#171;network ID&#187;), co umo\u017cliwia korzystanie z kilku nieprzecinaj\u0105cych si\u0119 sieci MCTP na jednym ho\u015bcie.\n<li class=\"l\"> W IPSec dodano wsparcie dla przekierowywania komunikat\u00f3w ICMP z informacjami o b\u0142\u0119dach (RFC 4301).\n<li class=\"l\"> Przyspieszono proces skanowania tras z wygas\u0142ymi czasami \u017cycia.\n<li class=\"l\"> Przyspieszono dzia\u0142anie XDP dzi\u0119ki bardziej rygorystycznemu unikaniu przydzielania du\u017cych blok\u00f3w pami\u0119ci.\n<li class=\"l\"> Dodano mo\u017cliwo\u015b\u0107 do\u0142\u0105czania metadanych do komunikat\u00f3w netconsole.\n<li class=\"l\"> W Netfilter zezwolono na definiowanie w przestrzeni u\u017cytkownika tabel, kt\u00f3re s\u0105 zwi\u0105zane z zarz\u0105dzaj\u0105cym procesem w tle i nie s\u0105 automatycznie usuwane po zako\u0144czeniu aplikacji u\u017cytkownika.\n<li class=\"l\"> W nftables przyspieszono dodawanie element\u00f3w do zestaw\u00f3w set z po\u0142\u0105czonymi zakresami.                      <\/ul>\n<li class=\"l\"> <b>Sprz\u0119t<\/b>\n<ul>\n<li class=\"l\"> W sterowniku i915 kontynuowano prace nad wsparciem chip\u00f3w Intel LunarLake (Xe 2). Dodano nowe identyfikatory PCI dla urz\u0105dze\u0144 opartych na chipach Intel Arrow Lake i Alder Lake N. Dla DisplayPort dodano wsparcie dla tunelowania (DP tunneling) oraz przydzia\u0142u pasma (bandwidth allocation). Dla wszystkich platform w\u0142\u0105czono tryb fastboot. Dodano wsparcie dla wyj\u015bcia debugowego powi\u0105zanego z poszczeg\u00f3lnymi urz\u0105dzeniami.\n<li class=\"l\"> W sterowniku AMDGPU przygotowano si\u0119 do wdro\u017cenia wsparcia dla GPU AMD RDNA3.5 i RDNA4. Dodano wsparcie dla 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 oraz frameworka RAS ACA. Do modu\u0142u j\u0105dra dodano parametr freesync_video do w\u0142\u0105czenia eksperymentalnego wsparcia dla optymalizacji prze\u0142\u0105czania tryb\u00f3w wideo z wykorzystaniem technologii adaptywnej synchronizacji FreeSync.\n<li class=\"l\"> W sterowniku Nouveau kod obs\u0142ugi wy\u015bwietlacza zosta\u0142 przet\u0142umaczony na u\u017cycie funkcji kmemdup().\n<li class=\"l\"> Kontynuowane s\u0105 prace nad sterownikiem drm (Direct Rendering Manager) Xe dla GPU opartego na architekturze Intel Xe, kt\u00f3ry jest u\u017cywany w kartach graficznych Intel z rodziny Arc oraz w zintegrowanej grafice, pocz\u0105wszy od procesor\u00f3w Tiger Lake.\n<li class=\"l\"> Dodano sterownik DRM dla chip\u00f3w Mediatek MT8188 VDOSYS1.\n<li class=\"l\"> Powi\u0105zane z podsystemami wideo ustawienia j\u0105dra przeniesiono do sekcji CONFIG_VIDEO.\n<li class=\"l\"> Dodano wsparcie dla SoC ARM64: Mediatek MT7981B (Filogic 820), MT7988A (Filogic 880), NXP i.MX8DXP, Renesas R8A779G2 (R-Car V4H ES2.0), R8A779H0 (R-Car V4M), TI J722S.\n<li class=\"l\"> Dodano wsparcie dla p\u0142yt ARM i urz\u0105dze\u0144: telefony z Androidem oparte na chipie Tegra30, modele Chromebook oparte na Mediatek MT8186, NAS, tablety i konsole do gier oparte na Rockchips RK35xx, p\u0142yt\u0119 White Hawk opart\u0105 na SoC Renesas, p\u0142yty oparte na Qualcomm SM8550 (Snapdragon 8 Gen 2), Apalis Evaluation Board, Sielaff i.MX6 Solo Board, Samsung Galaxy Tab 4 10.1 LTE.\n<li class=\"l\"> Przeprowadzono refaktoryzacj\u0119 kodu podsystemu d\u017awi\u0119ku ALSA. Dodano wsparcie dla system\u00f3w d\u017awi\u0119kowych Microchip SAM9x7, NXP i.MX95 oraz Qualcomm WCD939x. W sterowniku SoundWire dodano wsparcie ASoC z procesorami d\u017awi\u0119kowymi AMD ACP 6.3, a dla system\u00f3w Intel wdro\u017cono tryb DSPless. Dodano wsparcie dla dodatkowych kodek\u00f3w d\u017awi\u0119kowych Cirrus HD. W sterowniku virtio poprawiono zarz\u0105dzanie urz\u0105dzeniami d\u017awi\u0119kowymi.\n<li class=\"l\"> Dodano wsparcie dla kontroler\u00f3w Ethernet Marvell Octeon PCI Endpoint NIC VF oraz Intel E825-C 100G.            <\/ul>\n<\/ul>\n<p>Jednocze\u015bnie latynoameryka\u0144ska Fundacja Wolnego Oprogramowania stworzy\u0142a wersj\u0119 w pe\u0142ni wolnego j\u0105dra 6.9 \u2014 Linux-libre 6.9-gnu, oczyszczon\u0105 z element\u00f3w firmware i sterownik\u00f3w zawieraj\u0105cych komponenty lub fragmenty kodu, kt\u00f3rych zastosowanie ograniczone jest przez producenta. W wydaniu 6.9 zaktualizowano kod oczyszczania zb\u0119dnych fragment\u00f3w w sterownikach amdgpu, ath12k, adreno, btusb oraz r8169. Przeprowadzono oczyszczenie nowego sterownika ptp_fc3. Oczyszczono nazwy zb\u0119dnych fragment\u00f3w w plikach dts (devicetree) dla architektury Aarch64. Usuni\u0119to problemy z oczyszczaniem sterownika i915, kt\u00f3re prowadzi\u0142y do zawieszania si\u0119 podczas inicjalizacji. Wprowadzone zosta\u0142y zmiany zwi\u0105zane z obs\u0142ug\u0105 zb\u0119dnych fragment\u00f3w dostarczanych w postaci szesnastkowych zrzut\u00f3w.<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=61160\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u043e\u0441\u043b\u0435 \u0434\u0432\u0443\u0445 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u041b\u0438\u043d\u0443\u0441 \u0422\u043e\u0440\u0432\u0430\u043b\u044c\u0434\u0441 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b \u0440\u0435\u043b\u0438\u0437 \u044f\u0434\u0440\u0430 Linux 6.9. \u0421\u0440\u0435\u0434\u0438 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0437\u0430\u043c\u0435\u0442\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439: \u043c\u043e\u0434\u0443\u043b\u044c dm-vdo \u0434\u043b\u044f \u0434\u0435\u0434\u0443\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0441\u0436\u0430\u0442\u0438\u044f \u0431\u043b\u043e\u0447\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u0432 FUSE, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f pidfd \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432, \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c BPF-\u0442\u043e\u043a\u0435\u043d\u043e\u0432, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 Rust \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 ARM64, \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0424\u0421 Ext2 \u0432 \u0440\u0430\u0437\u0440\u044f\u0434 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0445, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 NTFS, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-115726","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u043e\u0441\u043b\u0435 \u0434\u0432\u0443\u0445 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u041b\u0438\u043d\u0443\u0441 \u0422\u043e\u0440\u0432\u0430\u043b\u044c\u0434\u0441 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b \u0440\u0435\u043b\u0438\u0437 \u044f\u0434\u0440\u0430 Linux 6.9.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/news\/reliz-yadra-linux-6-9\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0420\u0435\u043b\u0438\u0437 \u044f\u0434\u0440\u0430 Linux 6.9 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u043e\u0441\u043b\u0435 \u0434\u0432\u0443\u0445 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u041b\u0438\u043d\u0443\u0441 \u0422\u043e\u0440\u0432\u0430\u043b\u044c\u0434\u0441 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b \u0440\u0435\u043b\u0438\u0437 \u044f\u0434\u0440\u0430 Linux 6.9.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/news\/reliz-yadra-linux-6-9\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2024-05-13T11:52:06+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2024-05-13T11:52:06+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Wydanie j\u0105dra Linux 6.9 | ProHoster","description":"Po dw\u00f3ch miesi\u0105cach prac rozwojowych Linus Torvalds zaprezentowa\u0142 wydanie j\u0105dra Linux 6.9.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/news\/reliz-yadra-linux-6-9","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0420\u0435\u043b\u0438\u0437 \u044f\u0434\u0440\u0430 Linux 6.9 | ProHoster","og:description":"\u041f\u043e\u0441\u043b\u0435 \u0434\u0432\u0443\u0445 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u041b\u0438\u043d\u0443\u0441 \u0422\u043e\u0440\u0432\u0430\u043b\u044c\u0434\u0441 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b \u0440\u0435\u043b\u0438\u0437 \u044f\u0434\u0440\u0430 Linux 6.9.","og:url":"https:\/\/prohoster.info\/pl\/blog\/news\/reliz-yadra-linux-6-9","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2024-05-13T11:52:06+00:00","article:modified_time":"2024-05-13T11:52:06+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"115726","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 00:14:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2026-01-23 00:14:20","updated":"2026-01-23 00:14:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/115726","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=115726"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/115726\/revisions"}],"predecessor-version":[{"id":164261,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/115726\/revisions\/164261"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=115726"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=115726"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=115726"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}