Message ID | 1490042703-19896-1-git-send-email-ard.biesheuvel@linaro.org |
---|---|
State | New |
Headers | show |
Ard: On this case, UnprotectUefiImage() should be skipped, because the image is not loaded. Thanks Liming >-----Original Message----- >From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Ard >Biesheuvel >Sent: Tuesday, March 21, 2017 4:45 AM >To: edk2-devel@lists.01.org; Yao, Jiewen <jiewen.yao@intel.com> >Cc: Tian, Feng <feng.tian@intel.com>; Zeng, Star <star.zeng@intel.com>; Ard >Biesheuvel <ard.biesheuvel@linaro.org> >Subject: [edk2] [PATCH] MdeModulePkg/DxeCore: ignore PdbPointer if >ImageAddress == 0 > >The memory protection code may be invoked to unprotect a driver when >DxeCore has not completed loading yet, in which case ImageAddress may >still be zero. So ignore the PdbPointer in this case, to prevent >PeCoffLoaderGetPdbPointer() from ASSERT()ing on a NULL value. > >Contributed-under: TianoCore Contribution Agreement 1.0 >Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> >--- > MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > >diff --git a/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c >b/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c >index 7689c794a8ad..6ecbb311a8c3 100644 >--- a/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c >+++ b/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c >@@ -462,9 +462,12 @@ ProtectUefiImageCommon ( > > ImageAddress = LoadedImage->ImageBase; > >- PdbPointer = PeCoffLoaderGetPdbPointer ((VOID*) (UINTN) >ImageAddress); >- if (PdbPointer != NULL) { >- DEBUG ((DEBUG_VERBOSE, " Image - %a\n", PdbPointer)); >+ PdbPointer = NULL; >+ if (ImageAddress != 0) { >+ PdbPointer = PeCoffLoaderGetPdbPointer ((VOID*) (UINTN) >ImageAddress); >+ if (PdbPointer != NULL) { >+ DEBUG ((DEBUG_VERBOSE, " Image - %a\n", PdbPointer)); >+ } > } > > // >-- >2.7.4 > >_______________________________________________ >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
diff --git a/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c b/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c index 7689c794a8ad..6ecbb311a8c3 100644 --- a/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c +++ b/MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c @@ -462,9 +462,12 @@ ProtectUefiImageCommon ( ImageAddress = LoadedImage->ImageBase; - PdbPointer = PeCoffLoaderGetPdbPointer ((VOID*) (UINTN) ImageAddress); - if (PdbPointer != NULL) { - DEBUG ((DEBUG_VERBOSE, " Image - %a\n", PdbPointer)); + PdbPointer = NULL; + if (ImageAddress != 0) { + PdbPointer = PeCoffLoaderGetPdbPointer ((VOID*) (UINTN) ImageAddress); + if (PdbPointer != NULL) { + DEBUG ((DEBUG_VERBOSE, " Image - %a\n", PdbPointer)); + } } //
The memory protection code may be invoked to unprotect a driver when DxeCore has not completed loading yet, in which case ImageAddress may still be zero. So ignore the PdbPointer in this case, to prevent PeCoffLoaderGetPdbPointer() from ASSERT()ing on a NULL value. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> --- MdeModulePkg/Core/Dxe/Misc/MemoryProtection.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) -- 2.7.4 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel