ในขณะที่ทุกวันนี้ Linus Torvalds กำลังจัดการกับการต้อนโค้ดใหม่เข้าสู่เคอร์เนล Linux และเป็นผู้รักษาประตูมากกว่าที่จะพัฒนาโค้ดเคอร์เนลใหม่ด้วยตัวเอง สำหรับ Linux 6.4 ที่กำลังพัฒนา เขาพบว่าตัวเองกำลังเขียนโค้ดอยู่เล็กน้อย

ตามที่ระบุไว้เมื่อสัปดาห์ที่แล้ว เขาลงมือทำความสะอาดโค้ดคัดลอกหน่วยความจำ x86 สำหรับ Linux 6.4 เป็นการส่วนตัว สัปดาห์นี้ เขาได้รวมโค้ดของตัวเองมากขึ้น เนื่องจากเขามีปัญหากับโค้ดบางส่วนที่วิศวกรของ Intel ผสานรวม ซึ่งเป็นส่วนหนึ่งของการเปิดใช้งาน Linear Address Masking

ย้อนกลับไปในช่วงวัน Linux 6.2 เมื่อปลายปีที่แล้ว Linus ปฏิเสธรหัส Intel LAM ในตอนนั้นเนื่องจากปัญหาทางเทคนิคต่างๆ จากนั้น Intel ได้ทำการปรับปรุงใหม่สำหรับ Linux 6.4


คราวนี้ Linus รวม Intel LAM ใน Linux 6.4 เป็นคุณลักษณะใหม่ของ CPU สำหรับการปล่อยให้พื้นที่ผู้ใช้จัดเก็บข้อมูลเมตาภายในบิตของตัวชี้โดยไม่ต้องปิดบังก่อนใช้งาน Intel LAM-เหมือน Arm TBI-สามารถใช้กับเครื่องเสมือน การทำโปรไฟล์/การฆ่าเชื้อ/การแท็ก และแอปพลิเคชันอื่นๆ แต่คราวนี้มีรหัสที่น้อยกว่าอุดมคติที่เขาใช้เป็นการส่วนตัว

Linus เขียนใน ผสานใหม่ ในวันศุกร์:

รวมสาขาอัปเดต x86 uaccess ของฉัน

การอัปเดต LAM (“การปิดบังที่อยู่เชิงเส้น”) ในรุ่นนี้ทำให้ฉันไม่พอใจกับวิธีการ”access_ok()”ที่เสร็จสิ้น และจริงๆ แล้วพบว่ามีข้อบกพร่องเล็กๆ สองสามข้อในนั้นด้วย นี่คือการล้างโค้ดของฉัน:

-ใช้บิตเครื่องหมายของตัวชี้ __user แทนการปิดบังที่อยู่และตรวจสอบกับช่วง TASK_SIZE

เราทำส่วนนี้แล้วสำหรับฝั่ง get/put_user() แต่’access_ok()’ทำสิ่งที่ไร้เดียงสา”มาสก์และตรวจสอบช่วง”ซึ่งไม่เพียงสร้างโค้ดที่น่ารังเกียจ แต่ยังจบลงด้วยความหมาย __access_ok นั้นทำงานได้ไม่ดี ดังนั้น copy_from_user_nmi() จึงไม่ได้รับสิทธิ์ในการตรวจสอบ

-ย้ายโค้ดทั้งหมดที่เป็น 64 บิตเท่านั้นไปยังไฟล์ส่วนหัวเวอร์ชัน 64 บิต เพื่อไม่ให้โค้ด x86 ที่ใช้ร่วมกันเสียหายโดยไม่จำเป็น และทำให้ดูเหมือนว่า LAM อาจทำงานได้ 32 บิตด้วย

-แก้ไขจุดบกพร่องในการปิดบังที่อยู่ (ซึ่งท้ายที่สุดแล้วไม่สำคัญ: ในกรณีนี้ การแก้ไขคือเพียงลบรหัสจุดบกพร่องออกทั้งหมด)

-การล้างข้อมูลเล็กน้อยและเพิ่มคำอธิบายเกี่ยวกับกฎ access_ok()

ดังนั้น Intel LAM จึงยังคงพร้อมใช้งานสำหรับ Linux 6.4 และ Torvalds ที่ปรับปรุงใหม่ประมาณหนึ่งร้อยรายการ บรรทัดของรหัสสำหรับทำความสะอาด
ขณะนี้มีพื้นที่ผู้ใช้ Linux เพื่อเตรียมใช้งาน Intel LAM

Categories: IT Info