Re: kernel memory allocation
Hi. In future replies, please CC the list. Does it panic in during the kmalloc, or afterwards? Are you checking if 'newBun' is NULL? I may be missing something obvious in that code, but unless you are out of memory or with some past corruption, I don't think that should panic the kernel. In any case, the panic trace should help. Cheers. --- João Eduardo Luís gpg key: 477C26E5 from pool.keyserver.eu On Jun 3, 2011, at 7:50 PM, Amirali Shambayati wrote:
thanks for your guidance. I just want to allocate memory for a struct. I use this:
struct bundle* newBun; newBun = kmalloc(sizeof(*newBun), GFP_KERNEL);
but it goes to panic state.
2011/6/3 João Eduardo Luís <jecluis@gmail.com> Hi.
From [1] I'm lead to believe the only difference between the regular kmalloc() arguments and those of kmalloc_node() is the one specifying which node you want to allocate the memory on.
Aside from the third argument, which seems to be related with NUMA (with which I never worked on kernel-context), I would suggest you to read [2].
If on the other hand you only want to allocate memory locally, maybe you should use kmalloc() or one of its variants [3].
Cheers.
[1] - http://www.kernel.org/doc/htmldocs/kernel-api/API-kmalloc-node.html [2] - http://www.kernel.org/doc/htmldocs/kernel-api/API-kcalloc.html [3] - http://www.kernel.org/doc/htmldocs/kernel-api/mm.html#id408507 --- João Eduardo Luís gpg key: 477C26E5 from pool.keyserver.eu
On Jun 3, 2011, at 7:07 PM, Amirali Shambayati wrote:
Hello all,
I just want to allocate memory for a struct instantiation. Would anyone guide me what arguments I should pass to "kmalloc_node"? Regards, -- Amirali Shambayati Bachelor Student Computer Engineering Department Sharif University of Technology Tehran, Iran
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
-- Amirali Shambayati Bachelor Student Computer Engineering Department Sharif University of Technology Tehran, Iran
-----Original Message----- From: kernelnewbies-bounces@kernelnewbies.org [mailto:kernelnewbies- bounces@kernelnewbies.org] On Behalf Of João Eduardo Luís Sent: Friday, June 03, 2011 12:40 PM To: Amirali Shambayati Cc: kernelnewbies Subject: Re: kernel memory allocation
Hi.
In future replies, please CC the list.
Does it panic in during the kmalloc, or afterwards? Are you checking if 'newBun' is NULL?
I may be missing something obvious in that code, but unless you are out of memory or with some past corruption, I don't think that should panic the kernel.
In any case, the panic trace should help.
Cheers.
--- João Eduardo Luís gpg key: 477C26E5 from pool.keyserver.eu
On Jun 3, 2011, at 7:50 PM, Amirali Shambayati wrote:
thanks for your guidance. I just want to allocate memory for a struct. I use this:
struct bundle* newBun; newBun = kmalloc(sizeof(*newBun), GFP_KERNEL);
but it goes to panic state.
Just guessing, but the most likely reason for the above call to kmalloc() to cause a panic is it's being called in atomic context. Are you seeing anything like "scheduling while atomic" in the panic back trace? If so, that's your problem and the solution is most likely to replace the above GFP_KERNEL with GFP_ATOMIC. The alternative would be to restructure the code so that the allocation doesn't happen in atomic context. Jeff Haran Bytemobile
participants (2)
-
Jeff Haran -
João Eduardo Luís