gpt4 book ai didi

c - 如何将动态数组发送到(内核模块)中的 copy_to_user

转载 作者:太空宇宙 更新时间:2023-11-04 03:24:42 25 4
gpt4 key购买 nike

我一直在为此努力,但没有取得任何进展。

我正在尝试将动态数组从内核发送到用户空间。似乎静态数组很容易发送到用户空间,但我得到的是我没有为动态数组做正确的事情

静态或固定变量,如 int a、char b[100] 可以很好地与 put_user 或 copy_to_user 配合使用。但是,当我尝试传递指针时,系统调用被终止或出现错误。

是否可以使用 copy_to_user 发送动态数组?几个星期以来,我一直试图自己解决这个问题,但我非常渴望得到帮助,并虚心寻求您的指导。

谢谢。

最佳答案

在用户空间,

memcpy(&data.items, ...)

不起作用:这会覆盖 data_t.items 字段的存储,而不是它指向的数组。但这正是您的内核代码试图做的。

相反,您想复制到 items 指向的内存。这看起来像

memcpy(data.items, ...)

在用户空间和

void *user_items;
get_user(&user_items, &from->items);
copy_to_user(user_items, ...);

在内核中,因为你需要先读取字段的值。

关于c - 如何将动态数组发送到(内核模块)中的 copy_to_user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42151774/

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