Podczas gdy obecnie Linus Torvalds zajmuje się głównie wprowadzaniem nowego kodu do jądra Linuksa i pełnieniem funkcji strażnika bramy, zamiast aktywnie opracowywać nowy kod jądra, dla będącego w fazie rozwoju Linuksa 6.4 odkrył, że zajmuje się trochę kodowaniem.

Jak zauważono w zeszłym tygodniu, osobiście zajął się czyszczeniem kodu kopii pamięci x86 dla Linuksa 6.4. W tym tygodniu scalił więcej własnego kodu, ponieważ miał problem z częścią kodu połączonego przez inżynierów Intela w ramach włączania liniowego maskowania adresów.

Pod koniec zeszłego roku, podczas Linuksa 6.2, Linus odrzucił wówczas kod Intel LAM z powodu różnych problemów technicznych. Następnie Intel przerobił go dla Linuksa 6.4.


Tym razem Linus połączył Intel LAM w Linuksie 6.4 jako ta nowa funkcja procesora umożliwiająca przechowywanie metadanych w przestrzeni użytkownika w niektórych bitach wskaźników bez maskowania ich przed użyciem. Intel LAM-podobnie jak Arm TBI-może być przydatny do maszyn wirtualnych, profilowania/sanitizerów/tagowania i innych aplikacji. Ale tym razem było trochę mniej niż idealnego kodu, który osobiście zabrał się do upiększania.

Linus napisał w nowym połączeniu w piątek:

Połącz moją gałąź aktualizacji uaccess x86.

Aktualizacje LAM („Linear Address Masking”) w tym wydaniu sprawiły, że byłem niezadowolony z tego, jak zrobiono „access_ok()”, i faktycznie okazało się, że zawiera kilka małych błędów. Oto moje oczyszczenie kodu:

-użyj bitu znaku wskaźnika __user zamiast maskować adres i sprawdzać go pod kątem zakresu TASK_SIZE.

Już zrobiliśmy tę część dla strony get/put_user(), ale’access_ok()’wykonał naiwną czynność „sprawdzania maski i zakresu”, co nie tylko generuje paskudny kod, ale także ma znaczenie że sam __access_ok nie wykonał dobrej roboty, więc copy_from_user_nmi() nie sprawdził poprawnie.

-przenieś cały kod, który jest tylko 64-bitowy, do 64-bitowej wersji pliku nagłówkowego, abyśmy niepotrzebnie nie zaśmiecali współdzielonego kodu x86 i sprawiali wrażenie, jakby LAM mógł działać w 32-bitowy też.

-popraw błąd w maskowaniu adresów (to nie ma znaczenia: w tym przypadku poprawka polegała na całkowitym usunięciu błędnego kodu).

-kilka trywialnych porządków i dodano komentarz na temat reguł access_ok().

Tak więc Intel LAM pozostaje gotowy do pracy z Linuksem 6.4, a Torvalds przerobił około stu linie kodu do czyszczenia.
Teraz przestrzeń użytkownika systemu Linux jest przygotowana do korzystania z funkcji Intel LAM.

Categories: IT Info