Reviewed-by: Ruiyu Ni <ruiyu...@intel.com>

Thanks/Ray

> -----Original Message-----
> From: edk2-devel <edk2-devel-boun...@lists.01.org> On Behalf Of
> jbrasen....@qualcommdatacenter.com
> Sent: Monday, March 26, 2018 4:57 PM
> To: edk2-devel@lists.01.org
> Subject: [edk2] [PATCH] MdeModulePkg/PartitionDxe: Add partition type
> guid to installed handle
> 
> From: Jeff Brasen <jbrasen....@qualcommdatacenter.com>
> 
> Add the partition type GUID for every partition to the installed handle,
> this is required per the UEFI specification.
> 
> "The firmware must add the PartitionTypeGuid to the handle of every
> active GPT partition using EFI_BOOT_SERVICES.InstallProtocolInterface()."
> 
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Jeff Brasen <jbrasen....@qualcommdatacenter.com>
> ---
>  .../Universal/Disk/PartitionDxe/ElTorito.c         |  4 ++-
>  MdeModulePkg/Universal/Disk/PartitionDxe/Gpt.c     |  4 ++-
>  MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c     |  7 +++--
>  .../Universal/Disk/PartitionDxe/Partition.c        | 30 
> ++++++++++++++--------
>  .../Universal/Disk/PartitionDxe/Partition.h        |  7 +++--
>  MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c     |  4 ++-
>  6 files changed, 38 insertions(+), 18 deletions(-)
> 
> diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/ElTorito.c
> b/MdeModulePkg/Universal/Disk/PartitionDxe/ElTorito.c
> index 2084ee5..a7b5434 100644
> --- a/MdeModulePkg/Universal/Disk/PartitionDxe/ElTorito.c
> +++ b/MdeModulePkg/Universal/Disk/PartitionDxe/ElTorito.c
> @@ -1,13 +1,14 @@
>  /** @file
>    Decode an El Torito formatted CD-ROM
> 
> +Copyright (c) 2018 Qualcomm Datacenter Technologies, Inc.
>  Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
>  This program and the accompanying materials
>  are licensed and made available under the terms and conditions of the BSD
> License
>  which accompanies this distribution.  The full text of the license may be
> found at
>  http://opensource.org/licenses/bsd-license.php
> 
>  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
> BASIS,
>  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
> EXPRESS OR IMPLIED.
> 
>  **/
> @@ -258,21 +259,22 @@ PartitionInstallElToritoChildHandles (
>                  Handle,
>                  DiskIo,
>                  DiskIo2,
>                  BlockIo,
>                  BlockIo2,
>                  DevicePath,
>                  (EFI_DEVICE_PATH_PROTOCOL *) &CdDev,
>                  &PartitionInfo,
>                  Catalog->Boot.Lba * (SIZE_2KB / Media->BlockSize),
>                  Catalog->Boot.Lba * (SIZE_2KB / Media->BlockSize) +
> CdDev.PartitionSize - 1,
> -                SubBlockSize
> +                SubBlockSize,
> +                NULL
>                  );
>        if (!EFI_ERROR (Status)) {
>          Found = EFI_SUCCESS;
>        }
>      }
>    }
> 
>    FreePool (VolDescriptor);
> 
>    return Found;
> diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Gpt.c
> b/MdeModulePkg/Universal/Disk/PartitionDxe/Gpt.c
> index 2cd3e15..fe26a64 100644
> --- a/MdeModulePkg/Universal/Disk/PartitionDxe/Gpt.c
> +++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Gpt.c
> @@ -6,20 +6,21 @@
>    This driver will have external input - disk partition.
>    This external input must be validated carefully to avoid security issue 
> like
>    buffer overflow, integer overflow.
> 
>    PartitionInstallGptChildHandles() routine will read disk partition content 
> and
>    do basic validation before PartitionInstallChildHandle().
> 
>    PartitionValidGptTable(), PartitionCheckGptEntry() routine will accept disk
>    partition content and validate the GPT table and GPT entry.
> 
> +Copyright (c) 2018 Qualcomm Datacenter Technologies, Inc.
>  Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
>  This program and the accompanying materials
>  are licensed and made available under the terms and conditions of the BSD
> License
>  which accompanies this distribution.  The full text of the license may be
> found at
>  http://opensource.org/licenses/bsd-license.php
> 
>  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
> BASIS,
>  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
> EXPRESS OR IMPLIED.
> 
>  **/
> @@ -412,21 +413,22 @@ PartitionInstallGptChildHandles (
>                 Handle,
>                 DiskIo,
>                 DiskIo2,
>                 BlockIo,
>                 BlockIo2,
>                 DevicePath,
>                 (EFI_DEVICE_PATH_PROTOCOL *) &HdDev,
>                 &PartitionInfo,
>                 Entry->StartingLBA,
>                 Entry->EndingLBA,
> -               BlockSize
> +               BlockSize,
> +               &Entry->PartitionTypeGUID
>                 );
>    }
> 
>    DEBUG ((EFI_D_INFO, "Prepare to Free Pool\n"));
> 
>  Done:
>    if (ProtectiveMbr != NULL) {
>      FreePool (ProtectiveMbr);
>    }
>    if (PrimaryHeader != NULL) {
> diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
> b/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
> index 55e9d26..479745b 100644
> --- a/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
> +++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Mbr.c
> @@ -4,20 +4,21 @@
>    MBR - Master Boot Record is in the first sector of a partitioned hard disk.
>          The MBR supports four partitions per disk. The MBR also contains 
> legacy
>          code that is not run on an EFI system. The legacy code reads the
>          first sector of the active partition into memory and
> 
>    BPB - BIOS Parameter Block is in the first sector of a FAT file system.
>          The BPB contains information about the FAT file system. The BPB is
>          always on the first sector of a media. The first sector also contains
>          the legacy boot strap code.
> 
> +Copyright (c) 2018 Qualcomm Datacenter Technologies, Inc.
>  Copyright (c) 2014, Hewlett-Packard Development Company, L.P.<BR>
>  Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
>  This program and the accompanying materials
>  are licensed and made available under the terms and conditions of the BSD
> License
>  which accompanies this distribution.  The full text of the license may be
> found at
>  http://opensource.org/licenses/bsd-license.php
> 
>  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
> BASIS,
>  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
> EXPRESS OR IMPLIED.
> 
> @@ -239,21 +240,22 @@ PartitionInstallMbrChildHandles (
>                  Handle,
>                  DiskIo,
>                  DiskIo2,
>                  BlockIo,
>                  BlockIo2,
>                  DevicePath,
>                  (EFI_DEVICE_PATH_PROTOCOL *) &HdDev,
>                  &PartitionInfo,
>                  HdDev.PartitionStart,
>                  HdDev.PartitionStart + HdDev.PartitionSize - 1,
> -                MBR_SIZE
> +                MBR_SIZE,
> +                ((Mbr->Partition[Index].OSIndicator == EFI_PARTITION) ?
> &gEfiPartTypeSystemPartGuid: NULL)
>                  );
> 
>        if (!EFI_ERROR (Status)) {
>          Found = EFI_SUCCESS;
>        }
>      }
>    } else {
>      //
>      // It's an extended partition. Follow the extended partition
>      // chain to get all the logical drives
> @@ -310,21 +312,22 @@ PartitionInstallMbrChildHandles (
>                   Handle,
>                   DiskIo,
>                   DiskIo2,
>                   BlockIo,
>                   BlockIo2,
>                   DevicePath,
>                   (EFI_DEVICE_PATH_PROTOCOL *) &HdDev,
>                   &PartitionInfo,
>                   HdDev.PartitionStart - ParentHdDev.PartitionStart,
>                   HdDev.PartitionStart - ParentHdDev.PartitionStart +
> HdDev.PartitionSize - 1,
> -                 MBR_SIZE
> +                 MBR_SIZE,
> +                 ((Mbr->Partition[0].OSIndicator == EFI_PARTITION) ?
> &gEfiPartTypeSystemPartGuid: NULL)
>                   );
>        if (!EFI_ERROR (Status)) {
>          Found = EFI_SUCCESS;
>        }
> 
>        if ((Mbr->Partition[1].OSIndicator != EXTENDED_DOS_PARTITION) &&
>            (Mbr->Partition[1].OSIndicator != EXTENDED_WINDOWS_PARTITION)
>            ) {
>          break;
>        }
> diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c
> b/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c
> index 46c0877..71acdcc 100644
> --- a/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c
> +++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.c
> @@ -1,16 +1,17 @@
>  /** @file
>    Partition driver that produces logical BlockIo devices from a physical
>    BlockIo device. The logical BlockIo devices are based on the format
>    of the raw block devices media. Currently "El Torito CD-ROM", UDF, Legacy
>    MBR, and GPT partition schemes are supported.
> 
> +Copyright (c) 2018 Qualcomm Datacenter Technologies, Inc.
>  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
>  This program and the accompanying materials
>  are licensed and made available under the terms and conditions of the BSD
> License
>  which accompanies this distribution.  The full text of the license may be
> found at
>  http://opensource.org/licenses/bsd-license.php
> 
>  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
> BASIS,
>  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
> EXPRESS OR IMPLIED.
> 
>  **/
> @@ -394,20 +395,21 @@ PartitionDriverBindingStop (
>    IN  EFI_HANDLE                    *ChildHandleBuffer
>    )
>  {
>    EFI_STATUS              Status;
>    UINTN                   Index;
>    EFI_BLOCK_IO_PROTOCOL   *BlockIo;
>    EFI_BLOCK_IO2_PROTOCOL  *BlockIo2;
>    BOOLEAN                 AllChildrenStopped;
>    PARTITION_PRIVATE_DATA  *Private;
>    EFI_DISK_IO_PROTOCOL    *DiskIo;
> +  EFI_GUID                *TypeGuid;
> 
>    BlockIo  = NULL;
>    BlockIo2 = NULL;
>    Private = NULL;
> 
>    if (NumberOfChildren == 0) {
>      //
>      // In the case of re-entry of the PartitionDriverBindingStop, the
>      // NumberOfChildren may not reflect the actual number of children on the
>      // bus driver. Hence, additional check is needed here.
> @@ -486,20 +488,27 @@ PartitionDriverBindingStop (
>      } else {
>        Status = EFI_SUCCESS;
>      }
> 
>      gBS->CloseProtocol (
>             ControllerHandle,
>             &gEfiDiskIoProtocolGuid,
>             This->DriverBindingHandle,
>             ChildHandleBuffer[Index]
>             );
> +
> +    if (IsZeroGuid (&Private->TypeGuid)) {
> +      TypeGuid = NULL;
> +    } else {
> +      TypeGuid = &Private->TypeGuid;
> +    }
> +
>      //
>      // All Software protocols have be freed from the handle so remove it.
>      // Remove the BlockIo Protocol if has.
>      // Remove the BlockIo2 Protocol if has.
>      //
>      if (BlockIo2 != NULL) {
>        //
>        // Some device drivers might re-install the BlockIO(2) protocols for a
>        // media change condition. Therefore, if the FlushBlocksEx returned 
> with
>        // EFI_MEDIA_CHANGED, just let the BindingStop fail to avoid potential
> @@ -509,35 +518,35 @@ PartitionDriverBindingStop (
>          Status = gBS->UninstallMultipleProtocolInterfaces (
>                           ChildHandleBuffer[Index],
>                           &gEfiDevicePathProtocolGuid,
>                           Private->DevicePath,
>                           &gEfiBlockIoProtocolGuid,
>                           &Private->BlockIo,
>                           &gEfiBlockIo2ProtocolGuid,
>                           &Private->BlockIo2,
>                           &gEfiPartitionInfoProtocolGuid,
>                           &Private->PartitionInfo,
> -                         Private->EspGuid,
> +                         TypeGuid,
>                           NULL,
>                           NULL
>                           );
>        }
>      } else {
>        Status = gBS->UninstallMultipleProtocolInterfaces (
>                         ChildHandleBuffer[Index],
>                         &gEfiDevicePathProtocolGuid,
>                         Private->DevicePath,
>                         &gEfiBlockIoProtocolGuid,
>                         &Private->BlockIo,
>                         &gEfiPartitionInfoProtocolGuid,
>                         &Private->PartitionInfo,
> -                       Private->EspGuid,
> +                       TypeGuid,
>                         NULL,
>                         NULL
>                         );
>      }
> 
>      if (EFI_ERROR (Status)) {
>        Private->InStop = FALSE;
>        gBS->OpenProtocol (
>               ControllerHandle,
>               &gEfiDiskIoProtocolGuid,
> @@ -1097,39 +1106,41 @@ PartitionFlushBlocksEx (
>    @param[in]  ParentDiskIo      Parent DiskIo interface.
>    @param[in]  ParentDiskIo2     Parent DiskIo2 interface.
>    @param[in]  ParentBlockIo     Parent BlockIo interface.
>    @param[in]  ParentBlockIo2    Parent BlockIo2 interface.
>    @param[in]  ParentDevicePath  Parent Device Path.
>    @param[in]  DevicePathNode    Child Device Path node.
>    @param[in]  PartitionInfo     Child Partition Information interface.
>    @param[in]  Start             Start Block.
>    @param[in]  End               End Block.
>    @param[in]  BlockSize         Child block size.
> +  @param[in]  TypeGuid          Partition GUID Type.
> 
>    @retval EFI_SUCCESS       A child handle was added.
>    @retval other             A child handle was not added.
> 
>  **/
>  EFI_STATUS
>  PartitionInstallChildHandle (
>    IN  EFI_DRIVER_BINDING_PROTOCOL  *This,
>    IN  EFI_HANDLE                   ParentHandle,
>    IN  EFI_DISK_IO_PROTOCOL         *ParentDiskIo,
>    IN  EFI_DISK_IO2_PROTOCOL        *ParentDiskIo2,
>    IN  EFI_BLOCK_IO_PROTOCOL        *ParentBlockIo,
>    IN  EFI_BLOCK_IO2_PROTOCOL       *ParentBlockIo2,
>    IN  EFI_DEVICE_PATH_PROTOCOL     *ParentDevicePath,
>    IN  EFI_DEVICE_PATH_PROTOCOL     *DevicePathNode,
>    IN  EFI_PARTITION_INFO_PROTOCOL  *PartitionInfo,
>    IN  EFI_LBA                      Start,
>    IN  EFI_LBA                      End,
> -  IN  UINT32                       BlockSize
> +  IN  UINT32                       BlockSize,
> +  IN  EFI_GUID                     *TypeGuid
>    )
>  {
>    EFI_STATUS              Status;
>    PARTITION_PRIVATE_DATA  *Private;
> 
>    Status  = EFI_SUCCESS;
>    Private = AllocateZeroPool (sizeof (PARTITION_PRIVATE_DATA));
>    if (Private == NULL) {
>      return EFI_OUT_OF_RESOURCES;
>    }
> @@ -1209,58 +1220,55 @@ PartitionInstallChildHandle (
>    if (Private->DevicePath == NULL) {
>      FreePool (Private);
>      return EFI_OUT_OF_RESOURCES;
>    }
> 
>    //
>    // Set the PartitionInfo into Private Data.
>    //
>    CopyMem (&Private->PartitionInfo, PartitionInfo, sizeof
> (EFI_PARTITION_INFO_PROTOCOL));
> 
> -  if (PartitionInfo->System == 1) {
> -    Private->EspGuid = &gEfiPartTypeSystemPartGuid;
> +  if (TypeGuid != NULL) {
> +    CopyGuid(&(Private->TypeGuid), TypeGuid);
>    } else {
> -    //
> -    // If NULL InstallMultipleProtocolInterfaces will ignore it.
> -    //
> -    Private->EspGuid = NULL;
> +    ZeroMem ((VOID *)&(Private->TypeGuid), sizeof (EFI_GUID));
>    }
> 
>    //
>    // Create the new handle.
>    //
>    Private->Handle = NULL;
>    if (Private->DiskIo2 != NULL) {
>      Status = gBS->InstallMultipleProtocolInterfaces (
>                      &Private->Handle,
>                      &gEfiDevicePathProtocolGuid,
>                      Private->DevicePath,
>                      &gEfiBlockIoProtocolGuid,
>                      &Private->BlockIo,
>                      &gEfiBlockIo2ProtocolGuid,
>                      &Private->BlockIo2,
>                      &gEfiPartitionInfoProtocolGuid,
>                      &Private->PartitionInfo,
> -                    Private->EspGuid,
> +                    TypeGuid,
>                      NULL,
>                      NULL
>                      );
>    } else {
>      Status = gBS->InstallMultipleProtocolInterfaces (
>                      &Private->Handle,
>                      &gEfiDevicePathProtocolGuid,
>                      Private->DevicePath,
>                      &gEfiBlockIoProtocolGuid,
>                      &Private->BlockIo,
>                      &gEfiPartitionInfoProtocolGuid,
>                      &Private->PartitionInfo,
> -                    Private->EspGuid,
> +                    TypeGuid,
>                      NULL,
>                      NULL
>                      );
>    }
> 
>    if (!EFI_ERROR (Status)) {
>      //
>      // Open the Parent Handle for the child
>      //
>      Status = gBS->OpenProtocol (
> diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.h
> b/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.h
> index c763c67..f1a0520 100644
> --- a/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.h
> +++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Partition.h
> @@ -1,16 +1,17 @@
>  /** @file
>    Partition driver that produces logical BlockIo devices from a physical
>    BlockIo device. The logical BlockIo devices are based on the format
>    of the raw block devices media. Currently "El Torito CD-ROM", UDF, Legacy
>    MBR, and GPT partition schemes are supported.
> 
> +Copyright (c) 2018 Qualcomm Datacenter Technologies, Inc.
>  Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
>  This program and the accompanying materials
>  are licensed and made available under the terms and conditions of the BSD
> License
>  which accompanies this distribution.  The full text of the license may be
> found at
>  http://opensource.org/licenses/bsd-license.php
> 
>  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
> BASIS,
>  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
> EXPRESS OR IMPLIED.
> 
>  **/
> @@ -58,21 +59,21 @@ typedef struct {
> 
>    EFI_DISK_IO_PROTOCOL         *DiskIo;
>    EFI_DISK_IO2_PROTOCOL        *DiskIo2;
>    EFI_BLOCK_IO_PROTOCOL        *ParentBlockIo;
>    EFI_BLOCK_IO2_PROTOCOL       *ParentBlockIo2;
>    UINT64                       Start;
>    UINT64                       End;
>    UINT32                       BlockSize;
>    BOOLEAN                      InStop;
> 
> -  EFI_GUID                     *EspGuid;
> +  EFI_GUID                     TypeGuid;
> 
>  } PARTITION_PRIVATE_DATA;
> 
>  typedef struct {
>    EFI_DISK_IO2_TOKEN           DiskIo2Token;
>    EFI_BLOCK_IO2_TOKEN          *BlockIo2Token;
>  } PARTITION_ACCESS_TASK;
> 
>  #define PARTITION_DEVICE_FROM_BLOCK_IO_THIS(a)  CR (a,
> PARTITION_PRIVATE_DATA, BlockIo,
> PARTITION_PRIVATE_DATA_SIGNATURE)
>  #define PARTITION_DEVICE_FROM_BLOCK_IO2_THIS(a) CR (a,
> PARTITION_PRIVATE_DATA, BlockIo2,
> PARTITION_PRIVATE_DATA_SIGNATURE)
> @@ -320,39 +321,41 @@ PartitionComponentNameGetControllerName (
>    @param[in]  ParentDiskIo      Parent DiskIo interface.
>    @param[in]  ParentDiskIo2     Parent DiskIo2 interface.
>    @param[in]  ParentBlockIo     Parent BlockIo interface.
>    @param[in]  ParentBlockIo2    Parent BlockIo2 interface.
>    @param[in]  ParentDevicePath  Parent Device Path.
>    @param[in]  DevicePathNode    Child Device Path node.
>    @param[in]  PartitionInfo     Child Partition Information interface.
>    @param[in]  Start             Start Block.
>    @param[in]  End               End Block.
>    @param[in]  BlockSize         Child block size.
> +  @param[in]  TypeGuid          Parition Type Guid.
> 
>    @retval EFI_SUCCESS       A child handle was added.
>    @retval other             A child handle was not added.
> 
>  **/
>  EFI_STATUS
>  PartitionInstallChildHandle (
>    IN  EFI_DRIVER_BINDING_PROTOCOL  *This,
>    IN  EFI_HANDLE                   ParentHandle,
>    IN  EFI_DISK_IO_PROTOCOL         *ParentDiskIo,
>    IN  EFI_DISK_IO2_PROTOCOL        *ParentDiskIo2,
>    IN  EFI_BLOCK_IO_PROTOCOL        *ParentBlockIo,
>    IN  EFI_BLOCK_IO2_PROTOCOL       *ParentBlockIo2,
>    IN  EFI_DEVICE_PATH_PROTOCOL     *ParentDevicePath,
>    IN  EFI_DEVICE_PATH_PROTOCOL     *DevicePathNode,
>    IN  EFI_PARTITION_INFO_PROTOCOL  *PartitionInfo,
>    IN  EFI_LBA                      Start,
>    IN  EFI_LBA                      End,
> -  IN  UINT32                       BlockSize
> +  IN  UINT32                       BlockSize,
> +  IN  EFI_GUID                     *TypeGuid
>    );
> 
>  /**
>    Test to see if there is any child on ControllerHandle.
> 
>    @param[in]  ControllerHandle    Handle of device to test.
> 
>    @retval TRUE                    There are children on the ControllerHandle.
>    @retval FALSE                   No child is on the ControllerHandle.
> 
> diff --git a/MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c
> b/MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c
> index 5aac564..83bd174 100644
> --- a/MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c
> +++ b/MdeModulePkg/Universal/Disk/PartitionDxe/Udf.c
> @@ -1,13 +1,14 @@
>  /** @file
>    Scan for an UDF file system on a formatted media.
> 
> +  Copyright (c) 2018 Qualcomm Datacenter Technologies, Inc.
>    Copyright (C) 2014-2017 Paulo Alcantara <pca...@zytor.com>
> 
>    This program and the accompanying materials are licensed and made
> available
>    under the terms and conditions of the BSD License which accompanies this
>    distribution.  The full text of the license may be found at
>    http://opensource.org/licenses/bsd-license.php
> 
>    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
> BASIS, WITHOUT
>    WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
> IMPLIED.
>  **/
> @@ -746,18 +747,19 @@ PartitionInstallUdfChildHandles (
>      Handle,
>      DiskIo,
>      DiskIo2,
>      BlockIo,
>      BlockIo2,
>      DevicePath,
>      (EFI_DEVICE_PATH_PROTOCOL *)&gUdfDevicePath,
>      &PartitionInfo,
>      StartingLBA,
>      EndingLBA,
> -    Media->BlockSize
> +    Media->BlockSize,
> +    NULL
>      );
>    if (EFI_ERROR (Status)) {
>      return (ChildCreated ? EFI_SUCCESS : Status);
>    }
> 
>    return EFI_SUCCESS;
>  }
> --
> 1.9.1
> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to