From: John Hodge Date: Sat, 9 Feb 2013 11:54:29 +0000 (+0800) Subject: Kernel/x86 - Fixed ACPICA shim possible null deref X-Git-Tag: rel0.15~581 X-Git-Url: https://git.ucc.asn.au/?a=commitdiff_plain;h=07515616399254e1e9d5f7664ea9c70986bf2ae3;p=tpg%2Facess2.git Kernel/x86 - Fixed ACPICA shim possible null deref --- diff --git a/KernelLand/Kernel/arch/x86/acpica.c b/KernelLand/Kernel/arch/x86/acpica.c index 57d7fe85..c2e5888d 100644 --- a/KernelLand/Kernel/arch/x86/acpica.c +++ b/KernelLand/Kernel/arch/x86/acpica.c @@ -94,7 +94,7 @@ ACPI_PHYSICAL_ADDRESS AcpiOsGetRootPointer(void) if( ACPI_FAILURE(rv) ) return 0; - LOG("val=%x", val); + LOG("val=0x%x", val); return val; // (Or use EFI) @@ -222,8 +222,13 @@ void *AcpiOsMapMemory(ACPI_PHYSICAL_ADDRESS PhysicalAddress, ACPI_SIZE Length) Uint ofs = PhysicalAddress & (PAGE_SIZE-1); int npages = (ofs + Length + (PAGE_SIZE-1)) / PAGE_SIZE; - void *rv = ((char*)MM_MapHWPages(PhysicalAddress, npages)) + ofs; + char *maploc = (void*)MM_MapHWPages(PhysicalAddress, npages); + if(!maploc) { + LOG("Mapping %P+0x%x failed", PhysicalAddress, Length); + return NULL; + } // MM_DumpTables(0, -1); + void *rv = maploc + ofs; LOG("Map (%P+%i pg) to %p", PhysicalAddress, npages, rv); return rv; }