list_del 分析2
来源:互联网 发布:最新域名升级访问中 编辑:程序博客网 时间:2024/06/06 00:35
bug提示无法请求0000000000200200地址所在的页,而问题出在list_del函数;分析list_del函数:
在内核中0xC0000000以下(内存为4G,高地址1G作为内核空间使用,低地址3G作为用户空间使用,此3G内核空间申请不到)的地址是不能申请到的,为了防止有的节点申请内存错误的时候也是NULL使用不可能被初始化的指针当作标记。而0x00200200 这样的低地址是内核空间申请内存不会出现的地址可以拿来当标记,
因为0x00200200不能被内核申请,所以当我们在内核空间引用该指针时,就会出现上面的BUG;
把entry->prev 设置为 LIST_POISON2,这样做有一个好处,就是:当你一旦不小心错误的引用了 entry->prev 这个指针的时候,就会打印如下的出错信息:Unable to handle kernel paging request at virtual address 00200200这样由出错信息中的“00200200”,你就可以知道是错误的引用了已经被删除了的链表节点啦!相反,如果把entry->prev 设置为 NULL,当你一旦不小心错误的引用了 entry->prev 这个指针的时候,打印的出错信息如下:Unable to handle kernel paging request at virtual address 00000000这样我们从出错地址“00000000”看不出出错的原因是错误的引用了已经被删除了的链表节点,因为NULL在很多地方都会被用到。
- list_del 分析2
- list_del 分析
- list_del()
- list_del()
- linux双向链表分析之list_del中的技巧
- linux双向链表分析之list_del中的技巧
- linux双向链表分析之list_del中的技巧
- linux内核删除list_del()删除元素…
- list_del使用错误,如果摘链后还有挂链,请使用list_del_init。否则引发血案!!!
- Object分析--2,equals()分析
- Mikrokopter MK 代码分析2-main分析
- nc 源代码分析(2),流程分析
- Hadoop源码分析2: NIO Socket 分析
- SystemC分析(2)Method运行机制分析
- linker分析2
- CASSINI源代码分析(2)
- linker分析2
- CSS实例分析2
- jvm原理及优化
- JAVA基础:JAVA Array 类介绍
- 【BACnet】2.bacnet-stack-0.8.0工程的makefile结构
- MTBF、MTTR、MTTF
- 湫湫系列故事——减肥记I<完全背包>
- list_del 分析2
- 1. 遥控器-华科尔Devo7e 改造成为支持 dsm2/dsmx 的多制式遥控器
- Erlang epmd的角色以及使用(转载自系统技术非业余研究)
- 使用JNDI配置数据源
- 云端呼叫中心坐席并发测试结果
- static类成员
- 2012年最有用的50款 jQuery 插件集锦——《表单篇》
- ARM RVDS4.0安装遇到toolconf.dll无法找到
- 数字图像处理领域的二十四个典型算法及vc实现、第一章