运维开发网

从内核分配用户空间内存

运维开发网 https://www.qedev.com 2020-05-08 11:00 出处:网络 作者:运维开发网整理
我正试着打电话 sys_readlink(const char __user *path, char __user *buf, int bufsiz) 直接,但获取EFAULT错误代码.出现此错误是因为buf指向内核空间的内存. 那么,是否有可能从内核分配用户空间内存? kmalloc(大小,GFP_USER)类似于kmalloc(大小,GFP_KERNEL) 并返回指向内核内存的指针. 您可以使
我正试着打电话

sys_readlink(const char __user *path, char __user *buf, int bufsiz)

直接,但获取EFAULT错误代码.出现此错误是因为buf指向内核空间的内存.

那么,是否有可能从内核分配用户空间内存?

kmalloc(大小,GFP_USER)类似于kmalloc(大小,GFP_KERNEL)

并返回指向内核内存的指针.

您可以使用set_fs临时禁用内存地址有效性检查

mm_segment_t old_fs;

old_fs = get_fs();
set_fs(KERNEL_DS);
/* Your syscall here */
set_fs(old_fs);
0

精彩评论

暂无评论...
验证码 换一张
取 消