Walaupun hari ini Linus Torvalds kebanyakannya berurusan dengan penggembalaan kod baharu ke dalam kernel Linux dan menjadi penjaga pintu daripada secara aktif membangunkan kod kernel baharu sendiri, untuk Linux 6.4 dalam pembangunan dia mendapati dirinya melakukan sedikit pengekodan.

Seperti yang dinyatakan minggu lepas, beliau secara peribadi telah membersihkan kod salinan memori x86 untuk Linux 6.4. Minggu ini dia telah menggabungkan lebih banyak kodnya sendiri kerana dia mengambil isu dengan beberapa kod yang digabungkan oleh jurutera Intel sebagai sebahagian daripada pembolehan Linear Address Masking mereka.

Dulu semasa Linux 6.2 hari pada akhir tahun lepas, Linus menolak kod Intel LAM pada masa itu untuk pelbagai isu teknikal. Intel kemudian mengolahnya semula untuk Linux 6.4.


Kali ini Linus menggabungkan Intel LAM ke dalam Linux 6.4 sebagai ciri CPU baharu ini untuk membenarkan ruang pengguna menyimpan metadata dalam beberapa bit penunjuk tanpa menyembunyikannya sebelum digunakan. Intel LAM-seperti Arm TBI-boleh digunakan untuk mesin maya, pemprofilan/sanitizer/penandaan, dan aplikasi lain. Tetapi kali ini terdapat beberapa kod yang kurang ideal yang dia sendiri ambil untuk merapikan.

Linus menulis dalam yang baharu a> pada hari Jumaat:

Gabungkan cawangan kemas kini uaccess x86 saya.

Kemas kini LAM (“Linear Address Masking”) dalam keluaran ini membuatkan saya tidak berpuas hati tentang cara”access_ok()”dilakukan, dan ternyata ia juga mempunyai beberapa pepijat kecil di dalamnya. Ini ialah pembersihan kod saya:

-gunakan bit tanda penunjuk __user daripada menutup alamat dan menyemaknya terhadap julat TASK_SIZE.

Kami sudah melakukan bahagian ini untuk bahagian get/put_user(), tetapi’access_ok()’melakukan perkara”pemeriksaan topeng dan julat”yang naif, yang bukan sahaja menghasilkan kod jahat, tetapi juga akhirnya bermakna bahawa __access_ok itu sendiri tidak melakukan kerja yang baik, jadi copy_from_user_nmi() tidak mendapat semakan dengan betul.

-alihkan semua kod yang 64-bit sahaja ke dalam versi 64-bit fail pengepala, supaya kami tidak mencemarkan kod x86 yang dikongsi dan menjadikannya kelihatan seperti LAM mungkin berfungsi dalam 32-bit juga.

-betulkan pepijat dalam penyamaran alamat (yang akhirnya tidak menjadi masalah: dalam kes ini pembetulan adalah dengan hanya mengalih keluar kod buggy sepenuhnya).

-beberapa pembersihan remeh dan menambah ulasan tentang peraturan access_ok().

Jadi Intel LAM kekal bersedia untuk menggunakan Linux 6.4 dan Torvalds mengolah semula sekitar seratus baris kod untuk membersihkannya.
Kini untuk ruang pengguna Linux untuk bersedia untuk menggunakan Intel LAM.