diff options
author | Tom Rini <trini@konsulko.com> | 2020-12-29 10:23:58 -0500 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2020-12-29 10:23:58 -0500 |
commit | 21e1cae7902e6a9b1d7cf47cf4764e6fe7d3452a (patch) | |
tree | da2c201eb28835141b1652216e57cb36811bd24d /lib/efi_loader/efi_console.c | |
parent | ab865a8ee5c1a069f72a171270c02c99ccda7bfa (diff) | |
parent | be48b0f453a3903e924a4f1790f134b9b36e5fa8 (diff) |
Merge tag 'efi-2021-01-rc5-2' of https://gitlab.denx.de/u-boot/custodians/u-boot-efi
Pull request for UEFI sub-system for efi-2021-01-rc5 (2)
The following errors in the UEFI sub-system are fixed:
* use after free in efi_exit()
* invalid free when using the boot manager
* pressing escape key once not recognized
Diffstat (limited to 'lib/efi_loader/efi_console.c')
-rw-r--r-- | lib/efi_loader/efi_console.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/efi_loader/efi_console.c b/lib/efi_loader/efi_console.c index 011accab789..705109596eb 100644 --- a/lib/efi_loader/efi_console.c +++ b/lib/efi_loader/efi_console.c @@ -14,6 +14,7 @@ #include <env.h> #include <stdio_dev.h> #include <video_console.h> +#include <linux/delay.h> #define EFI_COUT_MODE_2 2 #define EFI_MAX_COUT_MODE 3 @@ -689,6 +690,17 @@ static efi_status_t efi_cin_read_key(struct efi_key_data *key) switch (ch) { case 0x1b: /* + * If a second key is received within 10 ms, assume that we are + * dealing with an escape sequence. Otherwise consider this the + * escape key being hit. 10 ms is long enough to work fine at + * 1200 baud and above. + */ + udelay(10000); + if (!tstc()) { + pressed_key.scan_code = 23; + break; + } + /* * Xterm Control Sequences * https://www.xfree86.org/4.8.0/ctlseqs.html */ |