1. 程式人生 > >核心異常分析(訪問了空指標)

核心異常分析(訪問了空指標)

/*

*除錯核心驅動的過程中雖然編譯成功了 但是 載入時難免有時會遇到核心異常的情況

*其中訪問了空指標的情況 又是常見的異常原因 以下只是一個簡單的例子 在實際的工程

*中 引數傳遞的方式更復雜 這時就 更要細心查詢最終的根源 才能 排除異常 ...

*/

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




修改後 沒有異常的載入情況