On Wed, 2013-06-26 at 08:43 -0400, Peter Hurley wrote:On 06/26/2013 04:51 AM, channing wrote:Agree that currently all tty buffers of free list are with size
In tty_buffer_find(), it scans all tty buffers in
free buffer queue, if it finds matched one,
tty->buf.free will point to matched one's next buffer,
so tty buffers that ahead of matched one are removed
from free queue, they will never be used but they
are not released, then memory leak happen.
Actually, the whole scan loop is wrong: only tty buffers of
size 256 are added to the free list.
of 256, but are we sure that the scan loop in tty_buffer_find()
is wrong and should abandon? From the purpose of tty_buffer_find(),
I understand it shall scan the free list, but now it doesn't make
sense because tty_buffer_free() makes all the free list buffers
with size of 256:
tty_buffer_free()
{
if (b->size >= 512)
kfree(b);
}
I don't know why it's 512? looks like a hard configuration?
Can we make it configurable instead of a fixed value?
I understand, although no memory leak, there is logic mess between
tty_buffer_find() and tty_buffer_free(), either one shall make
change to keep accordance?