__lddk_copy_from_user()
の場合 copy_from_user()
を呼び出すだけです 、次に access_ok()
copy_from_user()
であるため、チェックは冗長です。 これらのチェック自体を実行します。
access_ok()
チェックは、ユーザー空間アプリケーションがカーネルにカーネルアドレスからの読み取りまたは書き込みを要求していないことを確認します (これらは整合性/セキュリティチェックです)。ポインターがユーザー空間によって提供されたからといって、それが間違いなくユーザー空間ポインターであることを意味するわけではありません。多くの場合、「カーネル ポインター」は単に、仮想アドレス空間の特定の領域内を指していることを意味します。
さらに、access_ok()
を呼び出す VERIFY_WRITE
で VERIFY_READ
を意味します であるため、前者を確認した場合、後者も確認する必要はありません。
2019 年のこのコミットの時点で、
access_ok()
type
はもうありません 引数なので、VERIFY_WRITE
対 VERIFY_READ
ポイントは論外です。