]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Core/DxeIplPeim/DxeLoadX64.c
Fix DxeIpl module bugs: DxeCoreFileName should be from the Dxe Core ffs file that...
[mirror_edk2.git] / EdkModulePkg / Core / DxeIplPeim / DxeLoadX64.c
index 451d239eb6196d4da900b62a68c781b943c373f8..cbb7595dac7bdaf2ffe1762bbc250f6ef0157a45 100644 (file)
@@ -445,12 +445,12 @@ Returns:
                &FfsFileHeader\r
                );\r
     if (!EFI_ERROR (Status)) {\r
-      CopyMem (FileName, &FfsFileHeader->Name, sizeof (EFI_GUID));\r
       Status = PeiProcessFile (\r
                  SectionType,\r
-                 FfsFileHeader,\r
+                 &FfsFileHeader,\r
                  Pe32Data\r
                  );\r
+      CopyMem (FileName, &FfsFileHeader->Name, sizeof (EFI_GUID));\r
       return Status;\r
     }\r
     Hob.Raw = GET_NEXT_HOB (Hob);\r
@@ -662,7 +662,7 @@ Returns:
   //\r
   Status = PeiProcessFile (\r
             EFI_SECTION_PE32,\r
-            FfsHeader,\r
+            &FfsHeader,\r
             &Pe32Data\r
             );\r
 \r
@@ -686,9 +686,9 @@ Returns:
 \r
 EFI_STATUS\r
 PeiProcessFile (\r
-  IN  UINT16                 SectionType,\r
-  IN  EFI_FFS_FILE_HEADER    *FfsFileHeader,\r
-  OUT VOID                   **Pe32Data\r
+  IN      UINT16                 SectionType,\r
+  IN OUT  EFI_FFS_FILE_HEADER    **RealFfsFileHeader,\r
+  OUT     VOID                   **Pe32Data\r
   )\r
 /*++\r
 \r
@@ -736,6 +736,9 @@ Returns:
   EFI_GUID                        TempGuid;\r
   EFI_FIRMWARE_VOLUME_HEADER      *FvHeader;\r
   EFI_COMPRESSION_SECTION         *CompressionSection;\r
+  EFI_FFS_FILE_HEADER             *FfsFileHeader;\r
+  \r
+  FfsFileHeader = *RealFfsFileHeader;\r
 \r
   Status = PeiServicesFfsFindSectionData (\r
              EFI_SECTION_COMPRESSION,\r
@@ -930,7 +933,11 @@ Returns:
               return EFI_NOT_FOUND;\r
             }\r
 \r
-            return PeiProcessFile (SectionType, FfsFileHeader, Pe32Data);\r
+            //\r
+            // Reture the FfsHeader that contain Pe32Data.\r
+            //\r
+            *RealFfsFileHeader = FfsFileHeader;\r
+            return PeiProcessFile (SectionType, RealFfsFileHeader, Pe32Data);\r
           }\r
         }\r
         //\r