小编tra*_*cer的帖子

Linux内核:copy_from_user - 带指针的struct

我已经实现了某种字符设备,我需要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函数复制"读取"函数中的每个指针 ?

linux kernel device-driver

9
推荐指数
2
解决办法
7084
查看次数

标签 统计

device-driver ×1

kernel ×1

linux ×1