mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 14:42:24 +00:00
[PATCH] Fix memory leak in vc_resize/vc_allocate
Memory leaks can happen in the vc_resize() function in drivers/char/vt.c because of the vc->vc_screenbuf variable overriding in vc_allocate(). The kmemleak reported trace is as follows: <__kmalloc> <vc_resize> <fbcon_init> <visual_init> <vc_allocate> <con_open> <tty_open> <chrdev_open> This patch no longer allocates a screen buffer in vc_allocate() if it was already allocated by vc_resize(). Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Acked-by: "Antonino A. Daplas" <adaplas@pol.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
bce9a234ce
commit
254e948b29
@ -737,7 +737,8 @@ int vc_allocate(unsigned int currcons) /* return 0 on success */
|
||||
visual_init(vc, currcons, 1);
|
||||
if (!*vc->vc_uni_pagedir_loc)
|
||||
con_set_default_unimap(vc);
|
||||
vc->vc_screenbuf = kmalloc(vc->vc_screenbuf_size, GFP_KERNEL);
|
||||
if (!vc->vc_kmalloced)
|
||||
vc->vc_screenbuf = kmalloc(vc->vc_screenbuf_size, GFP_KERNEL);
|
||||
if (!vc->vc_screenbuf) {
|
||||
kfree(vc);
|
||||
vc_cons[currcons].d = NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user