通过copy_from_user传递链表

时间:2014-06-25 12:37:27

标签: c linux linux-kernel linked-list system-calls

我正在开发一个Linux项目。我需要从用户空间程序将链表传递给内核。我已经使用了在用户空间中实现链表的内核方式。我已经定义了如下结构:

struct time{ int val; struct list_head* list; };

此结构的变量将是:

struct time mylist;

我已经给出了输入数据并使用了linux / include / list.h中的list_add函数来链接结构。 这个mylist是另一个结构的一部分:

struct params{
int data1;
struct time* mylist;
};

假设我获取了所有数据并将其存储在

struct params param;

现在,如果我将&param传递给系统调用,并在那里使用copy_from_user()功能,我是否可以访问该列表?我读到我无法取消引用内核空间中的指针(指向用户空间中的数据),并且我必须在Linux Kernel: copy_from_user - struct with pointers中再次使用copy_from_user函数。有人可以建议我将这个列表传递给内核空间的可能方法吗?

0 个答案:

没有答案