2017-09-06 5 views
0

私はcopy_from_user(…)copy_to_user(…)について、ユーザからコピーして、カーネルからユーザスペースに書き戻しています。私がcopy_from_user(…)の内部実装を見ると、それは約access_ok(…)を読むと、access_ok(…)がユーザ空間ポインタが有効であるかどうかをチェックするために使用されていると言い、 access_ok(…)memcpy(…)の2つの機能を持っています。acees_ok()のどのアドレスチェックがLinuxで行われますか

access_ok(…)は、ポインタの有効性をチェックするためにどのようなチェックをしていますか?

+1

https://stackoverflow.com/questions/12357752/what-is-the-point-of-using-the-linux-macro-access-ok – Matt

答えて

0

要するに、実際には、指定されたアドレスにメモリがマップされているかどうかをチェックします。これは、ページマッピングテーブルを調べ、そのアドレスに一致するエントリがあるかどうかをテストすることによって行われます。

さらに、アドレスが有効な範囲のアドレス値の下半分にあることをテストするだけで、ユーザー空間にアドレスが存在することがテストされます。

関連する問題