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

    /*

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

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

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

    */

    #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");






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


    评论 2
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值