跳转至

内核安全性

syscall 传入数据

一定要保证 syscall 传入的地址是合法的,否则会导致内核 panic。

应当进行以下检查:

  1. 页面是否存在
  2. 地址是否在用户空间
  3. 用户是否可写

注意对于传入的变量指针和小结构体指针,应当同时对开头和结尾进行检查,否则用户可能会构造一个结构体指针使其一半处于合法地址,一半处于非法地址。

对于 read 等系统调用,用户需要有相应页面的写权限,但对于 write 等系统调用,用户无需有相应页面的写权限而只需要读权限。