diff options
Diffstat (limited to 'drivers/char/vt.c')
-rw-r--r-- | drivers/char/vt.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/char/vt.c b/drivers/char/vt.c index edb7002a3216..0d56f8fc105c 100644 --- a/drivers/char/vt.c +++ b/drivers/char/vt.c | |||
@@ -750,13 +750,15 @@ int vc_allocate(unsigned int currcons) /* return 0 on success */ | |||
750 | return 0; | 750 | return 0; |
751 | } | 751 | } |
752 | 752 | ||
753 | static inline int resize_screen(struct vc_data *vc, int width, int height) | 753 | static inline int resize_screen(struct vc_data *vc, int width, int height, |
754 | int user) | ||
754 | { | 755 | { |
755 | /* Resizes the resolution of the display adapater */ | 756 | /* Resizes the resolution of the display adapater */ |
756 | int err = 0; | 757 | int err = 0; |
757 | 758 | ||
758 | if (vc->vc_mode != KD_GRAPHICS && vc->vc_sw->con_resize) | 759 | if (vc->vc_mode != KD_GRAPHICS && vc->vc_sw->con_resize) |
759 | err = vc->vc_sw->con_resize(vc, width, height); | 760 | err = vc->vc_sw->con_resize(vc, width, height, user); |
761 | |||
760 | return err; | 762 | return err; |
761 | } | 763 | } |
762 | 764 | ||
@@ -772,7 +774,7 @@ int vc_resize(struct vc_data *vc, unsigned int cols, unsigned int lines) | |||
772 | unsigned long old_origin, new_origin, new_scr_end, rlth, rrem, err = 0; | 774 | unsigned long old_origin, new_origin, new_scr_end, rlth, rrem, err = 0; |
773 | unsigned int old_cols, old_rows, old_row_size, old_screen_size; | 775 | unsigned int old_cols, old_rows, old_row_size, old_screen_size; |
774 | unsigned int new_cols, new_rows, new_row_size, new_screen_size; | 776 | unsigned int new_cols, new_rows, new_row_size, new_screen_size; |
775 | unsigned int end; | 777 | unsigned int end, user; |
776 | unsigned short *newscreen; | 778 | unsigned short *newscreen; |
777 | 779 | ||
778 | WARN_CONSOLE_UNLOCKED(); | 780 | WARN_CONSOLE_UNLOCKED(); |
@@ -780,6 +782,9 @@ int vc_resize(struct vc_data *vc, unsigned int cols, unsigned int lines) | |||
780 | if (!vc) | 782 | if (!vc) |
781 | return -ENXIO; | 783 | return -ENXIO; |
782 | 784 | ||
785 | user = vc->vc_resize_user; | ||
786 | vc->vc_resize_user = 0; | ||
787 | |||
783 | if (cols > VC_RESIZE_MAXCOL || lines > VC_RESIZE_MAXROW) | 788 | if (cols > VC_RESIZE_MAXCOL || lines > VC_RESIZE_MAXROW) |
784 | return -EINVAL; | 789 | return -EINVAL; |
785 | 790 | ||
@@ -800,7 +805,7 @@ int vc_resize(struct vc_data *vc, unsigned int cols, unsigned int lines) | |||
800 | old_row_size = vc->vc_size_row; | 805 | old_row_size = vc->vc_size_row; |
801 | old_screen_size = vc->vc_screenbuf_size; | 806 | old_screen_size = vc->vc_screenbuf_size; |
802 | 807 | ||
803 | err = resize_screen(vc, new_cols, new_rows); | 808 | err = resize_screen(vc, new_cols, new_rows, user); |
804 | if (err) { | 809 | if (err) { |
805 | kfree(newscreen); | 810 | kfree(newscreen); |
806 | return err; | 811 | return err; |