簡體   English   中英

kmalloc導致內核崩潰

[英]kernel crash with kmalloc

我實際上是在排隊的學科中嘗試使用kmalloc在內核代碼中分配內存。 我想將內存分配給q->agg_queue_hdr ,其中q是排隊規則,而agg_queue_hdr是結構,因此如果分配內存是這樣的:

q->agg_queue_hdr=kmalloc(sizeof(struct agg_queue), GFP_ATOMIC);

內核崩潰。 根據我從搜索中看到的kmalloc示例,現在將其更改為:

agg_queue_hdr=kmalloc(sizeof(struct agg_queue), GFP_ATOMIC);

內核不會崩潰。 現在我想知道如何為指針q->agg_queue_hdr分配內存?

確保q指向內存的有效區域。 然后,您應該能夠像開始一樣分配q->agg_queue_hdr

為什么不按以下方式修改代碼,這樣可以避免內核崩潰。

if (q->agg_queue_hdr) {
    q->agg_queue_hdr = kmalloc(sizeof(struct agg_queue), GFP_ATOMIC);
}
else {
    printk("[+] q->agg_queue_hdr invalid \n");

    dump_stack();  // print callstack in the kernel log.

}

拆卸“ q-> agg_queue_hdr”時,“ ldr”指令將在發生內核恐慌的地方工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM