2
我正在开发一个内核模块,通过netlink发送消息到用户空间。内核崩溃当试图释放skb与`nlmsg_free(skb_out)`
创建消息(消息发送):skb_out = nlmsg_new(msg_size,0);
。
在发送第一条消息之后,在发送第二条消息之前,我尝试用nlmsg_free(skb_out)
释放skb_out,但此函数导致内核崩溃。
- 如何解决这个崩溃?
或
- 是否有其他替代消息发送后,FRE的skb_out?
这里的源代码后:
skb_out = nlmsg_new(msg_size,0);
if(!skb_out)
{
printk(KERN_ERR "Failed to allocate new skb\n");
return;
}
nlh=nlmsg_put(skb_out,0,0,NLMSG_DONE,msg_size,0);
NETLINK_CB(skb_out).dst_group = 0; /* not in mcast group */
strncpy(nlmsg_data(nlh),msg,msg_size);
res=nlmsg_unicast(nl_sk,skb_out,pid);
if(res<0)
{
printk(KERN_INFO "Error while sending bak to user\n");
}
nlmsg_free(skb_out);
我需要你的帮助:http://stackoverflow.com/questions/23852866/netlink-giving-kernel-panic – SGG 2014-05-26 06:37:25