1 get_fs 和 set_fs
设置和得到用户能访问虚拟地址空间, 经常使用的两个直 kernel_ds和user_ds , 其中允许访问内核空间和用户空间,而后者只能访问用户空间。
我们在内核代码中经常看到如下代码
//如果仅仅能访问用户空间,那么需要对地址进一步校验,是否超出用户空间
if (!segment_eq(get_fs(), KERNEL_DS)) {
// 文件名地址大于用户进程空间,则返回错误-EFAULT
if ((unsigned long) filename >;= TASK_SIZE)
return -EFAULT;
}
2