Author: sir_richard
Date: Tue Feb  9 03:26:46 2010
New Revision: 45519

URL: http://svn.reactos.org/svn/reactos?rev=45519&view=rev
Log:
[FREELDR]: The WinLDR code forgot to update the File Path of boot driver 
entries from PA to VA as well, not just the registry path. It also tried to 
touch the PA LoaderBlock right after enabling the MMU. It should touch the VA 
LoaderBlock instead, since there is no guarantee that the address has been 
identity mapped (and hence the PA address interpreted as a VA address by the 
MMU is bogus).

Modified:
    trunk/reactos/boot/freeldr/freeldr/windows/winldr.c

Modified: trunk/reactos/boot/freeldr/freeldr/windows/winldr.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/freeldr/freeldr/windows/winldr.c?rev=45519&r1=45518&r2=45519&view=diff
==============================================================================
--- trunk/reactos/boot/freeldr/freeldr/windows/winldr.c [iso-8859-1] (original)
+++ trunk/reactos/boot/freeldr/freeldr/windows/winldr.c [iso-8859-1] Tue Feb  9 
03:26:46 2010
@@ -316,6 +316,7 @@
 
                // Convert the RegistryPath and DTE addresses to VA since we 
are not going to use it anymore
                BootDriver->RegistryPath.Buffer = 
PaToVa(BootDriver->RegistryPath.Buffer);
+               BootDriver->FilePath.Buffer = 
PaToVa(BootDriver->FilePath.Buffer);
                BootDriver->LdrEntry = PaToVa(BootDriver->LdrEntry);
 
                NextBd = BootDriver->Link.Flink;
@@ -584,7 +585,7 @@
        WinLdrTurnOnPaging(LoaderBlock, PcrBasePage, TssBasePage, GdtIdt);
 
        /* Save final value of LoaderPagesSpanned */
-       LoaderBlock->Extension->LoaderPagesSpanned = LoaderPagesSpanned;
+       LoaderBlockVA->Extension->LoaderPagesSpanned = LoaderPagesSpanned;
 
        DPRINTM(DPRINT_WINDOWS, "Hello from paged mode, KiSystemStartup %p, 
LoaderBlockVA %p!\n",
                KiSystemStartup, LoaderBlockVA);


Reply via email to