diff --git a/drivers/char/vt.c b/drivers/char/vt.c
index 4a9eb3044e52c068641d1a3ddccd3682fdf228c3..cff1d4bce21d2da1d75aa55f6019571920617acf 100644
--- a/drivers/char/vt.c
+++ b/drivers/char/vt.c
@@ -3065,7 +3065,8 @@ static int bind_con_driver(const struct consw *csw, int first, int last,
 
 		old_was_color = vc->vc_can_do_color;
 		vc->vc_sw->con_deinit(vc);
-		vc->vc_origin = (unsigned long)vc->vc_screenbuf;
+		if (!vc->vc_origin)
+			vc->vc_origin = (unsigned long)vc->vc_screenbuf;
 		visual_init(vc, i, 0);
 		set_origin(vc);
 		update_attr(vc);