diff --git a/src/system/kernel/arch/x86/arch_vm.cpp b/src/system/kernel/arch/x86/arch_vm.cpp index 7746915c23..ce0ad1663e 100644 --- a/src/system/kernel/arch/x86/arch_vm.cpp +++ b/src/system/kernel/arch/x86/arch_vm.cpp @@ -223,11 +223,18 @@ static int64 sPropositions[MTRR_MAX_SOLUTIONS]; static void find_nearest(uint64 value, int iteration) { - TRACE_MTRR("find_nearest %Lx %d\n", value, iteration); - if (iteration > (MTRR_MAX_SOLUTIONS - 1) || (iteration + 1) >= sSolutionCount) - return; - uint64 down, up; int i; + uint64 down, up; + TRACE_MTRR("find_nearest %Lx %d\n", value, iteration); + if (iteration > (MTRR_MAX_SOLUTIONS - 1) || (iteration + 1) >= sSolutionCount) { + if (sSolutionCount > MTRR_MAX_SOLUTIONS) { + // no solutions yet, save something + for (i=0; i