linux内核编程memcpy,memcpy--内核崩溃后memcpy

我需要帮助我想使用memcpy在内核空间复制一个头,但屏幕只是黑色,它似乎不喜欢我的memcpy。请有人帮助我。memcpy--内核崩溃后memcpy

remaining = ntohs(iphead->tot_len) - 20; //(remaining = total size of ip packet - size of meta header)

while(remaining != 0) {

currentHead = (struct iphdr *) pos; //save the first 'real' header

if(currentHead == NULL)

goto fail;

nskb = dev_alloc_skb(ntohs(currentHead->tot_len) + MAC_LENGTH);

if(nskb == NULL)

goto fail; //We can't allocate that memory so we leave

if(nskb->tail + MAC_LENGTH + ntohs(currentHead->tot_len) <= nskb->end){

nskb->data = skb_put(nskb, (MAC_LENGTH + ntohs(currentHead->tot_len))); // allocated all the memory we need

memcpy(nskb->data,(*skb)->mac_header, MAC_LENGTH); //Put the mac header in place

nskb->mac_header = nskb->data; //Save the mac header location

nskb->network_header = nskb->data + MAC_LENGTH; //Move the pointer to where the network header will be

memcpy(nskb->network_header, pos, ntohs(currentHead->tot_len)); //save the ip + payload

nskb->data = nskb->network_header;

2011-05-17

docas

+2

正如你所说的问题不是很清楚,或可重复。如果我是你,我不会抛出代码,但要清楚而简洁地解释出了什么问题。提供我们可以编译和测试的代码,并解释您看到的内容以及您的期望。同时指定您正在使用的操作系统以及您正在使用的编程环境。 –

2011-05-17 16:33:20

+0

对'memcpy'的调用是否会返回?如果是这样,它会返回什么值?由于这是一个循环,它在第一次循环迭代中失败还是只有在“剩余”是一个特定值时才会失败? –

2011-05-17 16:42:33

+0

确定对不起我的缺陷,正在运行Linux 2.6.32-30-通用正在发生的事情是,我编译好的代码没有错误,但是当我用insmod deaggr.ko将它上传到内核时,屏幕变黑得到它我必须重新启动。在var/log/messages中,它表示31米的被盗内存。图形性能可能受损。我正在做的是将一个mac头文件从(* skb) - > mac_header的解聚数据包(skbs捆绑在一起)复制到单个skb的顶部,然后将其插回网络堆栈。它在循环上失败,但我注释了循环仍然失败的memcpy –

2011-05-17 17:00:51

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值