Trong khi những ngày này, Linus Torvalds chủ yếu xử lý việc dồn mã mới vào nhân Linux và là người gác cổng hơn là tích cực tự mình phát triển mã nhân mới, đối với Linux 6.4 đang phát triển, anh thấy mình đang viết mã một chút.

Như đã lưu ý vào tuần trước, cá nhân anh ấy đã dọn dẹp mã sao chép bộ nhớ x86 cho Linux 6.4. Tuần này, anh ấy đã hợp nhất nhiều mã của riêng mình hơn khi anh ấy gặp sự cố với một số mã do các kỹ sư của Intel hợp nhất như một phần của quá trình kích hoạt Mặt nạ địa chỉ tuyến tính của họ.

Trở lại những ngày Linux 6.2 vào cuối năm ngoái, Linus đã từ chối mã LAM của Intel vào thời điểm đó vì nhiều vấn đề kỹ thuật. Intel sau đó đã làm lại nó cho Linux 6.4.


Lần này Linus sáp nhập Intel LAM vào Linux 6.4 vì tính năng CPU mới này cho phép không gian người dùng lưu trữ siêu dữ liệu trong một số bit của con trỏ mà không che giấu nó trước khi sử dụng. Intel LAM-giống như Arm TBI-có thể được sử dụng cho các máy ảo, định hình/khử trùng/gắn thẻ và các ứng dụng khác. Nhưng lần này, có một số mã ít lý tưởng hơn mà cá nhân anh ấy đã phát triển.

Linus đã viết trong một hợp nhất vào Thứ Sáu:

Hợp nhất nhánh cập nhật uaccess x86 của tôi.

Bản cập nhật LAM (“Mặt nạ địa chỉ tuyến tính”) trong bản phát hành này khiến tôi không hài lòng về cách thực hiện”access_ok()”và thực ra nó cũng có một số lỗi nhỏ. Đây là phần xóa mã của tôi:

-sử dụng bit dấu của con trỏ __user thay vì ẩn địa chỉ và kiểm tra địa chỉ đó trong phạm vi TASK_SIZE.

Chúng tôi đã thực hiện phần này cho phía get/put_user(), nhưng’access_ok()’đã thực hiện thao tác”kiểm tra phạm vi và mặt nạ”ngây thơ, điều này không chỉ tạo ra mã khó chịu mà cuối cùng còn có ý nghĩa bản thân __access_ok đó đã không làm tốt công việc và vì vậy copy_from_user_nmi() đã không kiểm tra đúng.

-di chuyển tất cả mã chỉ có 64-bit vào phiên bản 64-bit của tệp tiêu đề, để chúng tôi không làm ô nhiễm mã x86 được chia sẻ một cách không cần thiết và làm cho mã có vẻ như LAM có thể hoạt động trong 32-bit cũng vậy.

-sửa một lỗi trong việc ẩn địa chỉ (điều đó không thành vấn đề: trong trường hợp này, cách khắc phục là chỉ cần xóa hoàn toàn mã lỗi).

-một vài thao tác dọn dẹp nhỏ và thêm bình luận về các quy tắc access_ok().

Vì vậy, Intel LAM vẫn sẵn sàng hoạt động cho Linux 6.4 và Torvalds đã làm lại khoảng một trăm dòng mã để làm sạch nó.
Giờ đây, không gian người dùng Linux chuẩn bị sử dụng Intel LAM.

Categories: IT Info