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