我已经实现了某种字符设备,我需要copy_ from_user函数的帮助.
我有一个结构:
struct my_struct{
int a;
int *b;
};
Run Code Online (Sandbox Code Playgroud)
我在用户空间初始化它,并使用'write'函数将指针传递给my_struct到我的char设备.在Kernel的Space字符设备'write'函数中,我将它从*char转换为这种结构.我使用kmalloc为结构分配一些内存并执行copy_from_user 它.
这对于简单的'int a'来说很好,但是它只复制b值的指针(地址),而不是b指向的值,所以我现在在Kernel Space中,我正在使用指向用户空间内存的指针.这是不正确的,我不应该直接访问用户空间指针,我必须 copy_from_user在我的结构中的每个指针,然后使用copy_to_user函数复制"读取"函数中的每个指针 ?