当前位置:  技术问答>linux和unix

读内存,导致板子重启,为何??

    来源: 互联网  发布时间:2016-08-30

    本文导语:  函数如下,是一内核模块中用来解析网络报文的,但在执行红字部分的时候就会直接导致ARM板子重启,我一开始是以为memcpy出问题了,后来用eh->h_dest[0]这样最简单的一句访问内存的句子也是同样问题,于是打印了skb...

函数如下,是一内核模块中用来解析网络报文的,但在执行红字部分的时候就会直接导致ARM板子重启,我一开始是以为memcpy出问题了,后来用eh->h_dest[0]这样最简单的一句访问内存的句子也是同样问题,于是打印了skb的地址,是以下这些值:246,294,1828。感觉这个地址怎么这么小的,是不是这里有问题?还望高手指点迷津啊,谢谢了!
int parse_pkt(struct sk_buff *skb, u_int16_t skb_displ, struct pfring_pkthdr *hdr)
{
  struct ethhdr *eh = (struct ethhdr *)(skb->data - skb_displ);
  u_int16_t displ, ip_len;

  memset(&hdr->parsed_pkt, 0, sizeof(struct pkt_parsing_info));
  hdr->parsed_header_len = 9;

  /* MAC adderess */
  memcpy(&hdr->parsed_pkt.dmac, eh->h_dest, sizeof(eh->h_dest));
 ...
}

|
struct sk_buff是贯穿整个linux内核网络模块的结构,在网络模块的每一层都会修改他的内容,不过一般是设置一些指针及每一层自己独有的东西,skb->data是在驱动层到内核网络core层之间被赋值的,然后才去掉了mac头部,传给网络协议栈。

lz这个问题可能是因为没有移植完全底层的一些修改,register_device_handler跟驱动之间还有挺多关于skb的处理,可能是这部分遗漏了。

|
skb的地址,是以下这些值:246,294,1828是什么意思?对应那些变量的值?

LZ你的代码写得确实不怎么样,没有任何保护就指针来回地指。这类问题应该比较好调试的, 属于访问越界的问题。在对指针操作前,最好判断一下指针是否为空,在memcpy的时候,判断一下src, dest指针对应的内存空间大小是非常有必要的。

出错时,对应的变量值都为多少啊:
skb? skb_displ? 
eh? eh变量内容?

正常情况下,这些值都应该是什么范围?

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux下删除不掉共享内存是什么情况导致的?
  • 【咨询】Linux操作系统下读未申请的内存或导致异常吗?谢谢!
  • Android 异步获取网络图片并处理导致内存溢出问题解决方法
  • C++ Vectors 成员 get_allocator():返回vector的内存分配器
  • 我的机器内存128 ,安装redhat9 后,可用内存很少了,如何节省内存呢?
  • C++ Vectors 成员 capacity():返回vector所能容纳的元素数量(在不重新分配内存的情况下)
  • 奇闻:Apache+Apache JServ 1.1.1+1G内存居然报内存不够,那位高友知道参数设置,把俺的1G内存都利用起来,感激不尽啊
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 怎样读取指定内存地址处指定长度的内存数据???(
  • C/C++内存池实现介绍及基本要求
  • 【操作系统虚拟内存和物理内存疑惑】
  • linux下free命令显示的内存使用情况分析
  • 请教一个关于内存分配的问题(系统和DMA共享一块物理内存空间)
  • c/c++内存堆分配和栈分配理解
  • Solaris下如何获得物理内存和虚拟内存的大小?
  • Ubuntu查看内存,进程相关命令介绍
  • 程序需要共享内存相当大,但是系统的内存有限
  • Linux 共享内存介绍及实现代码
  • 关于大于2G内存的使用.....按32位编译的进程怎么使用大于2G的内存?
  • Linux内存文件系统(ramdisk)的三种实现方式
  • redhat9内存使用率高达73%,怎么查看内存具体使用情况
  • Microsoft IE MSHTML内存破坏远程代码执行漏洞
  • 遇到奇怪的内存泄露问题,应用程序杀死内存无法释放!
  • Microsoft Internet Explorer内存破坏漏洞(CNVD-2013-13096)
  • 多个进程对系统V共享内存进行读写,怎样实现对共享内存部分进行加解锁?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3