Some platforms with very large page sizes override the use of page basedmemset(buf->data, 0, N_TTY_BUF_SIZE);I wonder why the tty code has that N_TTY_BUF_SIZE special casing in
if (PAGE_SIZE != N_TTY_BUF_SIZE)
kfree(...)
else
free_page(...)
but quite frankly, I'm not convinced about these patches at all.
the first place? I think we can probably just get rid of it and thus
we can use kzfree() here if we want to.
allocators (eg older ARM would go around allocating 32K). The normal path
is 4K or 8K page sized buffers.
I think Pekka meant the other way around - why don't we always just use kmalloc(N_TTY_BUF_SIZE)/kfree(), and drop the whole conditional "use page allocator" entirely?
I suspect the "use page allocator" is historical - ie the tty layer originally always did that, and then when people wanted to suppotr smaller areas than one page, they added the special case. I have this dim memory of the _original_ kmalloc not handling page-sized allocations well (due to embedded size/pointer overheads), but I think all current allocators are perfectly happy to allocate PAGE_SIZE buffers without slop.
If I'm right, then we could just use kmalloc/kfree unconditionally. Pekka?