kmalloc 导致内核崩溃

发布于 2024-12-07 02:10:34 字数 460 浏览 1 评论 0原文

我试图在内核代码中使用 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

I am trying to assign memory using kmalloc in kernel code in fact in a queueing discipline. I want to assign memory to q->agg_queue_hdr of which q is a queueing discipline and agg_queue_hdr is a struct, so if assign memory like this:

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

the kernel crashes. Based on the examples of kmalloc I saw from searching, I now changed it to:

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

with which the kernel doesn't crash. Now I want to know how can I assign memory to the pointer q->agg_queue_hdr?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

国粹 2024-12-14 02:10:34

确保q指向有效的内存区域。然后您应该能够像开始时一样分配 q->agg_queue_hdr

Make sure q is pointed to a valid area of memory. Then you should be able to assign q->agg_queue_hdr like you had it to begin with.

情绪少女 2024-12-14 02:10:34

为什么不使用以下方式修改代码,这样可以避免内核恐慌。

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”指令将在发生内核恐慌时起作用。

Why don't you modify your code with below way, which would avoid kernel panic.

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.

}

When disassembing "q->agg_queue_hdr", "ldr" instruction will works where kernel panic occurs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文