diff mbox series

[edk2,MdeModulePkg/Library,v1,1/1] MdeModulePkg/UefiBootManangerLib: Fix exception issue

Message ID 20190319125913.19187-2-ming.huang@linaro.org
State Accepted
Commit 6c27a4d337d0034cecf9f2c05d1f20c342d41e01
Headers show
Series Fix exception issue while UsbMass block io uninstalled | expand

Commit Message

Ming Huang March 19, 2019, 12:59 p.m. UTC
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(+)

-- 
2.9.5

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Comments

Leif Lindholm March 19, 2019, 1:46 p.m. UTC | #1
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

> 

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Wu, Hao A March 21, 2019, 1:12 a.m. UTC | #2
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

> >

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
diff mbox series

Patch

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 (