我正在编写一个小型内核设备,我需要在列表中存储值。首先添加到列表工作正常,但下一个条目会触发错误。谁能说我为什么?我的代码如下;我在fedora 18中使用内核3.6.10-4.fc18.x86_64
LIST_HEAD(dns_list_lp ) ;
static void add_dns_list(__be32 v4address,struct in6_addr v6address)
{
struct dns_nat node;
INIT_LIST_HEAD( &node.dns_list);
node.dns_v4address=v4address;
node.dns_v6address=v6address;
list_add_tail ( &node.dns_list , &dns_list_lp );
}
答案 0 :(得分:2)
您尝试存储指向局部变量的指针。您必须记住,一旦函数返回变量node
的生命周期结束,并且列表中的指针不再有效。
答案 1 :(得分:1)
每次调用add_dns_list
时,您都会初始化列表。