diff options
author | Stefan Roese <sr@denx.de> | 2017-11-17 08:47:09 +0100 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2017-12-01 13:26:10 +0100 |
commit | 8300be612cda2ae0a07bcc513d00e3b99b7f5f6f (patch) | |
tree | b5693066beced44747e3a2233161619371025af8 /cmd | |
parent | 362f00f979fb6d2972bd682e4c533120ea7c84e8 (diff) | |
download | u-boot-8300be612cda2ae0a07bcc513d00e3b99b7f5f6f.zip u-boot-8300be612cda2ae0a07bcc513d00e3b99b7f5f6f.tar.gz u-boot-8300be612cda2ae0a07bcc513d00e3b99b7f5f6f.tar.bz2 |
efi_loader: Exit in efi_set_bootdev() upon invalid "desc"
When trying to load an image from a non-existent USB key, U-Boot v2017.11
crashes on my x86 platform:
=> load usb 0:1 03000000 abc
General Protection
EIP: 0010:[<7b59030d>] EFLAGS: 00010286
Original EIP :[<fff4330d>]
...
This used to work in v2017.09. Testing has shown, that this bug was
introduced with patch 95c5553e [efi_loader: refactor boot device and
loaded_image handling].
This patch now checks if a valid "desc" is returned from blk_get_dev()
and only continues when "desc" is available. Resulting in this cmd
output (again):
=> load usb 0:1 03000000 abc
** Bad device usb 0 **
Signed-off-by: Stefan Roese <sr@denx.de>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/bootefi.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/cmd/bootefi.c b/cmd/bootefi.c index 67855ba..aa754b7 100644 --- a/cmd/bootefi.c +++ b/cmd/bootefi.c @@ -436,6 +436,8 @@ void efi_set_bootdev(const char *dev, const char *devnr, const char *path) int part; desc = blk_get_dev(dev, simple_strtol(devnr, NULL, 10)); + if (!desc) + return; part = parse_partnum(devnr); bootefi_device_path = efi_dp_from_part(desc, part); |