Jika __lddk_copy_from_user()
cukup panggil copy_from_user()
, lalu access_ok()
cek berlebihan, karena copy_from_user()
melakukan pemeriksaan ini sendiri.
access_ok()
pemeriksaan memastikan bahwa aplikasi userspace tidak meminta kernel untuk membaca dari atau menulis ke alamat kernel (itu adalah pemeriksaan integritas/keamanan). Hanya karena sebuah pointer disediakan oleh userspace tidak berarti bahwa itu pasti pointer userspace - dalam banyak kasus "kernel pointer" hanya berarti bahwa itu menunjuk ke dalam wilayah tertentu dari ruang alamat virtual.
Selain itu, memanggil access_ok()
dengan VERIFY_WRITE
menyiratkan VERIFY_READ
, jadi jika Anda mencentang yang pertama, Anda juga tidak perlu mencentang yang terakhir.
Mulai komit ini pada tahun 2019,
access_ok()
tidak lagi memiliki type
argumen, jadi VERIFY_WRITE
versus VERIFY_READ
intinya diperdebatkan.
ps:Cara bersih untuk hanya mendapatkan proses induk?
Tentukan apakah antarmuka jaringan nirkabel atau kabel