涉及的結構如下所示。 結構節點int a; int b; }copy_from_user - 難以從用戶空間複製雙指針
struct ioctl_node {
struct node **ptr;
int count; //Stores the no of pointers this ptr is pointing to.
};
在用戶空間中,我已填充ioctl_node的結構與count = 3
。 和ptr[0]
和ptr[2]
指向類型節點的兩個結構,而ptr[1]
是NULL
。我想把它傳遞給內核。 我已經發布了ioctl調用,將這個信息從用戶空間傳遞到內核空間。
我在內核空間中做了以下操作。
struct ioctl_node k_node;
copy_from_user(&k_node, arg, sizeof(struct ioctl_node)) //arg is the source
//k_node.count is showing the right value what I have set in the user space.
struct node *tmp = NULL;
然後我做到了,copy_from_user(&tmp, k_node.ptr, sizeof(struct node *)
,而且這次調用也成功返回。 但是,我有困難,在內核空間中正確複製**ptr
的全部內容。 任何人都可以幫忙,我怎麼能做到這一點。我應該怎麼做下一個copy_from_user來複制所有的內容。我嘗試過,但它給複製錯誤。
難道你不能改變你的規格來複制連續的內存區嗎?如果內部指針錯誤,你會怎麼做? –