On Thu, 2011-09-22 at 14:07 -0700, Joe Perches wrote:
On Thu, 2011-09-22 at 13:57 -0700, Colin Cross wrote:
quoted
seq_files are often used for debugging. When things are going wrong
due to failed physically contiguous allocations, the exponentially
growing physically contiguous allocations in seq_read can make things
worse. There is no need for physically contiguous memory, so switch
to virtually contiguous memory instead.
vmalloc's are relatively expensive.
And very limited on certain archs..
Perhaps use kmalloc when appropriate instead?
[]
quoted
- /* don't ask for more than the kmalloc() max size */
- if (size > KMALLOC_MAX_SIZE)
- size = KMALLOC_MAX_SIZE;
-
- buf = kmalloc(size, GFP_KERNEL);
+ buf = vmalloc(size);
if (!buf)
return -ENOMEM;
if (size > KMALLOC_MAX_SIZE)
buf = vmalloc(size, GFP_KERNEL)
else
buf = kmalloc(size, GFP_KERNEL)
There's wrappers for this stuff IIRC, that said all this is a horrible
idea. Just avoid the situation instead of coping with it.