【发布时间】:2009-11-08 23:49:26
【问题描述】:
我已经实现了某种字符设备,我需要有关 copy_from_user 功能的帮助。
我有一个结构:
struct my_struct{
int a;
int *b;
};
我在用户空间初始化它并使用'write'函数将指向my_struct的指针传递给我的char设备。在内核的空间字符设备“写入”函数中,我将它从 *char 转换为这种结构。我使用 kmalloc 为结构分配一些内存,并在其中执行 copy_from_user 。
简单的'int a'很好,但它只复制b值的指针(地址),而不是b指向的值,所以我现在在内核空间中,我正在使用一个指向a的指针用户空间内存。这是不正确的吗?我不应该直接访问用户空间指针,我必须 copy_from_user 结构中的每个指针,然后使用 copy_to_user 函数复制回“读取”函数中的每个指针?
【问题讨论】:
标签: linux device-driver kernel