The Bugzilla tracker for this: https://bugzilla.tianocore.org/show_bug.cgi?id=1631
Ming Huang (1): MdeModulePkg/UefiBootManangerLib: Fix exception issue
MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c | 3 +++ 1 file changed, 3 insertions(+)
The system environment: virtual-CDROM(USB interface) via BMC, insert a iso file to CDROM, like ubuntu-18.04.1-server-arm64.iso, change CDROM to first boot option. With release version bios, disconnecting CDROM when boot to "1 seconds left, Press Esc or F2 to enter Setup" then system will get a exception.
The root cause is the EFI_BLOCK_IO_PROTOCOL for UsbMass will be uninstalled in this situation after print some transfer error. The status will be invalid parameter. This line will get a exception for BlockIo not point to right address: AllocatePool (BlockIo->Media->BlockSize) So, here need to judge the status after ASSERT_EFI_ERROR.
The Bugzilla tracker for this: https://bugzilla.tianocore.org/show_bug.cgi?id=1631
Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang ming.huang@linaro.org --- MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c index 4ce83ce22d61..0535cd7335b4 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c @@ -1069,6 +1069,9 @@ BmExpandMediaDevicePath ( // Status = gBS->HandleProtocol (Handle, &gEfiBlockIoProtocolGuid, (VOID **) &BlockIo); ASSERT_EFI_ERROR (Status); + if (EFI_ERROR (Status)) { + return NULL; + } Buffer = AllocatePool (BlockIo->Media->BlockSize); if (Buffer != NULL) { BlockIo->ReadBlocks (
Thanks, Ming.
On Tue, Mar 19, 2019 at 08:59:13PM +0800, Ming Huang wrote:
The system environment: virtual-CDROM(USB interface) via BMC, insert a iso file to CDROM, like ubuntu-18.04.1-server-arm64.iso, change CDROM to first boot option. With release version bios, disconnecting CDROM when boot to "1 seconds left, Press Esc or F2 to enter Setup" then system will get a exception.
The root cause is the EFI_BLOCK_IO_PROTOCOL for UsbMass will be uninstalled in this situation after print some transfer error. The status will be invalid parameter. This line will get a exception for BlockIo not point to right address: AllocatePool (BlockIo->Media->BlockSize) So, here need to judge the status after ASSERT_EFI_ERROR.
The Bugzilla tracker for this: https://bugzilla.tianocore.org/show_bug.cgi?id=1631
Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang ming.huang@linaro.org
Reviewed-by: Leif Lindholm leif.lindholm@linaro.org
MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c index 4ce83ce22d61..0535cd7335b4 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c @@ -1069,6 +1069,9 @@ BmExpandMediaDevicePath ( // Status = gBS->HandleProtocol (Handle, &gEfiBlockIoProtocolGuid, (VOID **) &BlockIo); ASSERT_EFI_ERROR (Status);
- if (EFI_ERROR (Status)) {
- return NULL;
- } Buffer = AllocatePool (BlockIo->Media->BlockSize); if (Buffer != NULL) { BlockIo->ReadBlocks (
-- 2.9.5
Thanks Ming and Leif.
Reviewed-by: Hao Wu hao.a.wu@intel.com Patch was committed at 6c27a4d337d0034cecf9f2c05d1f20c342d41e01.
Best Regards, Hao Wu
-----Original Message----- From: Leif Lindholm [mailto:leif.lindholm@linaro.org] Sent: Tuesday, March 19, 2019 9:47 PM To: Ming Huang Cc: linaro-uefi@lists.linaro.org; edk2-devel@lists.01.org; Wu, Hao A; Kinney, Michael D; Gao, Liming; ard.biesheuvel@linaro.org; wanghuiqiang@huawei.com; huangming23@huawei.com; zhangjinsong2@huawei.com; mengfanrong@huawei.com; huangdaode@hisilicon.com Subject: Re: [Patch MdeModulePkg/Library v1 1/1] MdeModulePkg/UefiBootManangerLib: Fix exception issue
Thanks, Ming.
On Tue, Mar 19, 2019 at 08:59:13PM +0800, Ming Huang wrote:
The system environment: virtual-CDROM(USB interface) via BMC, insert a iso file to CDROM, like ubuntu-18.04.1-server-arm64.iso, change CDROM to first boot option. With release version bios, disconnecting CDROM when boot to "1 seconds left, Press Esc or F2 to enter Setup" then system will get a exception.
The root cause is the EFI_BLOCK_IO_PROTOCOL for UsbMass will be
uninstalled
in this situation after print some transfer error. The status will be invalid parameter. This line will get a exception for BlockIo not point to right address: AllocatePool (BlockIo->Media->BlockSize) So, here need to judge the status after ASSERT_EFI_ERROR.
The Bugzilla tracker for this: https://bugzilla.tianocore.org/show_bug.cgi?id=1631
Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ming Huang ming.huang@linaro.org
Reviewed-by: Leif Lindholm leif.lindholm@linaro.org
MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c
b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c
index 4ce83ce22d61..0535cd7335b4 100644 --- a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c +++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c @@ -1069,6 +1069,9 @@ BmExpandMediaDevicePath ( // Status = gBS->HandleProtocol (Handle, &gEfiBlockIoProtocolGuid, (VOID
**) &BlockIo);
ASSERT_EFI_ERROR (Status);
- if (EFI_ERROR (Status)) {
- return NULL;
- } Buffer = AllocatePool (BlockIo->Media->BlockSize); if (Buffer != NULL) { BlockIo->ReadBlocks (
-- 2.9.5