summaryrefslogtreecommitdiff
path: root/EdkModulePkg/Universal/Disk/Partition/Dxe/Mbr.c
diff options
context:
space:
mode:
Diffstat (limited to 'EdkModulePkg/Universal/Disk/Partition/Dxe/Mbr.c')
-rw-r--r--EdkModulePkg/Universal/Disk/Partition/Dxe/Mbr.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/EdkModulePkg/Universal/Disk/Partition/Dxe/Mbr.c b/EdkModulePkg/Universal/Disk/Partition/Dxe/Mbr.c
index c0cd23c5bb..ce6b0d5353 100644
--- a/EdkModulePkg/Universal/Disk/Partition/Dxe/Mbr.c
+++ b/EdkModulePkg/Universal/Disk/Partition/Dxe/Mbr.c
@@ -108,7 +108,7 @@ Returns:
return MbrValid;
}
-BOOLEAN
+EFI_STATUS
PartitionInstallMbrChildHandles (
IN EFI_DRIVER_BINDING_PROTOCOL *This,
IN EFI_HANDLE Handle,
@@ -129,8 +129,9 @@ Arguments:
DevicePath - Parent Device Path
Returns:
- EFI_SUCCESS - If a child handle was added
- other - A child handle was not added
+ EFI_SUCCESS - If a child handle was added
+ EFI_MEDIA_CHANGED - Media changed Detected
+ !EFI_SUCCESS - Not found MBR partition.
--*/
{
@@ -140,13 +141,13 @@ Returns:
UINTN Index;
HARDDRIVE_DEVICE_PATH HdDev;
HARDDRIVE_DEVICE_PATH ParentHdDev;
- BOOLEAN Found;
+ EFI_STATUS Found;
UINT32 PartitionNumber;
EFI_DEVICE_PATH_PROTOCOL *DevicePathNode;
EFI_DEVICE_PATH_PROTOCOL *LastDevicePathNode;
Mbr = NULL;
- Found = FALSE;
+ Found = EFI_NOT_FOUND;
Mbr = AllocatePool (BlockIo->Media->BlockSize);
if (Mbr == NULL) {
@@ -161,6 +162,7 @@ Returns:
Mbr
);
if (EFI_ERROR (Status) || !PartitionValidMbr (Mbr, BlockIo->Media->LastBlock)) {
+ Found = Status;
goto Done;
}
//
@@ -237,7 +239,7 @@ Returns:
);
if (!EFI_ERROR (Status)) {
- Found = TRUE;
+ Found = EFI_SUCCESS;
}
}
} else {
@@ -257,6 +259,7 @@ Returns:
Mbr
);
if (EFI_ERROR (Status)) {
+ Found = Status;
goto Done;
}
@@ -295,7 +298,7 @@ Returns:
(BOOLEAN) (Mbr->Partition[0].OSIndicator == EFI_PARTITION)
);
if (!EFI_ERROR (Status)) {
- Found = TRUE;
+ Found = EFI_SUCCESS;
}
if ((Mbr->Partition[1].OSIndicator != EXTENDED_DOS_PARTITION) &&