Hello,
Looks there is a potential memory leak at drivers/tty/tty_io.c: do_tty_write().
It did allocate a buf_chunk if tty->write_cnt < chunk, however, buf_chunk was not
freed after the writing is done. Below tiny patch could fix it.
Thanks,
-Jeff
diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
index b425c79..f09e73e 100644
--- a/drivers/tty/tty_io.c
+++ b/drivers/tty/tty_io.c
@@ -1011,6 +1011,7 @@ static inline ssize_t do_tty_write(
size_t count)
{
ssize_t ret, written = 0;
+ unsigned char *buf_chunk = NULL;
unsigned int chunk;
ret = tty_write_lock(tty, file->f_flags & O_NDELAY);@@ -1041,8 +1042,6 @@ static inline ssize_t do_tty_write(
/* write_buf/write_cnt is protected by the atomic_write_lock mutex */
if (tty->write_cnt < chunk) {
- unsigned char *buf_chunk;
-
if (chunk < 1024)
chunk = 1024;
@@ -1082,6 +1081,9 @@ static inline ssize_t do_tty_write(
inode->i_mtime = current_fs_time(inode->i_sb);
ret = written;
}
+
+ if (buf_chunk)
+ kfree(buf_chunk);
out:
tty_write_unlock(tty);
return ret;