diff options
Diffstat (limited to 'drivers/tty/vt/vt.c')
| -rw-r--r-- | drivers/tty/vt/vt.c | 7 | 
1 files changed, 4 insertions, 3 deletions
| diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c index 309a39197be0..e5ffed795e4c 100644 --- a/drivers/tty/vt/vt.c +++ b/drivers/tty/vt/vt.c @@ -81,6 +81,7 @@  #include <linux/errno.h>  #include <linux/kd.h>  #include <linux/slab.h> +#include <linux/vmalloc.h>  #include <linux/major.h>  #include <linux/mm.h>  #include <linux/console.h> @@ -350,7 +351,7 @@ static struct uni_screen *vc_uniscr_alloc(unsigned int cols, unsigned int rows)  	/* allocate everything in one go */  	memsize = cols * rows * sizeof(char32_t);  	memsize += rows * sizeof(char32_t *); -	p = kmalloc(memsize, GFP_KERNEL); +	p = vmalloc(memsize);  	if (!p)  		return NULL; @@ -366,7 +367,7 @@ static struct uni_screen *vc_uniscr_alloc(unsigned int cols, unsigned int rows)  static void vc_uniscr_set(struct vc_data *vc, struct uni_screen *new_uniscr)  { -	kfree(vc->vc_uni_screen); +	vfree(vc->vc_uni_screen);  	vc->vc_uni_screen = new_uniscr;  } @@ -1206,7 +1207,7 @@ static int vc_do_resize(struct tty_struct *tty, struct vc_data *vc,  	if (new_cols == vc->vc_cols && new_rows == vc->vc_rows)  		return 0; -	if (new_screen_size > (4 << 20)) +	if (new_screen_size > KMALLOC_MAX_SIZE)  		return -EINVAL;  	newscreen = kzalloc(new_screen_size, GFP_USER);  	if (!newscreen) |