gpt4 book ai didi

copy_to_user 无法将数据从内核复制到 mmap 用户?

转载 作者:行者123 更新时间:2023-11-30 18:12:08 26 4
gpt4 key购买 nike

在用户空间程序中,我通过 mmap 分配一些内存,如下函数调用:

void *memory;
int fd;
fd = open(filepath, O_RDWR);
if (fd < 0)
return errno;

memory = mmap(NULL, 4096, PROT_WRITE, MAP_SHARED, fd, 0);
if (memory == MAP_FAILED)
return -1;

//syscall() goes here

在系统调用的内核空间中,我尝试将数据复制到内存映射区域,如下所示:

copy_to_user(memory,src,4096);

编辑:在帖子中添加了错误检查代码以进行澄清在这种情况下,copy_to_user() 调用反复失败,而如果我执行 memory = malloc(),它总是会成功。

在这种情况下,我的 mmap 权限标志是否错误?

最佳答案

打开成功吗?那么 mmap 呢?目标文件足够大吗?可以通过用户空间的映射写入文件吗?

另外,重复的 4096 是一个强烈的打击,你的代码是错误的。用户空间应该传递预期的大小。

关于copy_to_user 无法将数据从内核复制到 mmap 用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40705506/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com