efi_loader: fix SetMode()

Correct the check of the mode number in SetMode() service of the simple
text output protocol.

Clear the screen in SetMode().

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
diff --git a/lib/efi_loader/efi_console.c b/lib/efi_loader/efi_console.c
index 2fc25e1..fef0b2e 100644
--- a/lib/efi_loader/efi_console.c
+++ b/lib/efi_loader/efi_console.c
@@ -316,23 +316,6 @@
 	return EFI_EXIT(EFI_SUCCESS);
 }
 
-static efi_status_t EFIAPI efi_cout_set_mode(
-			struct efi_simple_text_output_protocol *this,
-			unsigned long mode_number)
-{
-	EFI_ENTRY("%p, %ld", this, mode_number);
-
-
-	if (mode_number > efi_con_mode.max_mode)
-		return EFI_EXIT(EFI_UNSUPPORTED);
-
-	efi_con_mode.mode = mode_number;
-	efi_con_mode.cursor_column = 0;
-	efi_con_mode.cursor_row = 0;
-
-	return EFI_EXIT(EFI_SUCCESS);
-}
-
 static const struct {
 	unsigned int fg;
 	unsigned int bg;
@@ -378,6 +361,20 @@
 	return EFI_EXIT(EFI_SUCCESS);
 }
 
+static efi_status_t EFIAPI efi_cout_set_mode(
+			struct efi_simple_text_output_protocol *this,
+			unsigned long mode_number)
+{
+	EFI_ENTRY("%p, %ld", this, mode_number);
+
+	if (mode_number >= efi_con_mode.max_mode)
+		return EFI_EXIT(EFI_UNSUPPORTED);
+	efi_con_mode.mode = mode_number;
+	EFI_CALL(efi_cout_clear_screen(this));
+
+	return EFI_EXIT(EFI_SUCCESS);
+}
+
 static efi_status_t EFIAPI efi_cout_reset(
 			struct efi_simple_text_output_protocol *this,
 			char extended_verification)