我已经实现了一种字符设备,需要帮助处理 copy_from_user 函数。
我有一个结构体:
struct my_struct{
int a;
int *b;
};
我在用户空间初始化结构体,并使用“write”函数将指向my_struct的指针传递给我的字符设备。在内核空间的字符设备“write”函数中,我将它从*char转换为这种结构。我使用kmalloc为结构体分配一些内存,并使用copy_from_user
将其复制到其中。
对于简单的“int a”来说,这没问题,但它只复制指向b值的指针(地址),而不是指向b指向的值,所以现在我在内核空间,正在使用指向用户空间内存的指针。这样做是否不正确,我不应该直接访问用户空间指针,而是必须每次都使用copy_from_user
函数复制我的结构体中的每个指针,然后在“read”函数中使用copy_to_user
函数将每个指针复制回去?