内核异常分析(访问了空指针)

/*

*调试内核驱动的过程中虽然编译成功了 但是 加载时难免有时会遇到内核异常的情况 

*其中访问了空指针的情况 又是常见的异常原因 以下只是一个简单的例子 在实际的工程

*中 参数传递的方式更复杂 这时就 更要细心查找最终的根源 才能 排除异常 ...

*/

#include <linux/module.h>  

#include <linux/kernel.h>  
#include <linux/init.h> 

/* #include<linux/slab.h> */ 

void D(void) 

    int *p = NULL;      /* p = kmalloc(sizeof(int),GFP_KERNEL); */ 
    int a = 6; 
    printk("Function D\n"); 
    *p = a+5;     

 
void C(void) 

    printk("Function C\n"); 
    D();     

 
void B(void) 

    printk("Function B\n"); 
    C();     

 
void A(void) 

    printk("Function A\n"); 
    B();     

 
int oops_init(void) 

    printk("oops init\n"); 
    A(); 
    return 0; 

 
void oops_exit(void) 

    printk("oops exit!\n"); 

 
module_init(oops_init); 
module_exit(oops_exit); 
MODULE_LICENSE("GPL"); 
MODULE_AUTHOR("David Xie"); 






修改后 没有异常的加载情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值