On 9 September 2015 at 12:35, Ard Biesheuvel <ard.biesheu...@linaro.org> wrote:
> On 9 September 2015 at 11:53, Heyi Guo <heyi....@linaro.org> wrote:
>> During page entry attribute update, if there are table entries
>> between starting BlockEntry and LastBlockEntry, table entries will be
>> set as block entries and the allocated memory of the tables will be
>> leaked.
>>
>> so we break the inner loop when we find a table entry and run outer
>> loop again to step into the table by the same logic.
>>
>
> Another nice find!
>
>> Contributed-under: TianoCore Contribution Agreement 1.0
>> Signed-off-by: Heyi Guo <heyi....@linaro.org>
>> Cc: Leif Lindholm <leif.lindh...@linaro.org>
>> Cc: Ard Biesheuvel <ard.biesheu...@linaro.org>
>> ---
>>  ArmPkg/Library/ArmLib/AArch64/AArch64Mmu.c | 6 +++++-
>>  1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/ArmPkg/Library/ArmLib/AArch64/AArch64Mmu.c 
>> b/ArmPkg/Library/ArmLib/AArch64/AArch64Mmu.c
>> index 3be6b70..ae1834f 100644
>> --- a/ArmPkg/Library/ArmLib/AArch64/AArch64Mmu.c
>> +++ b/ArmPkg/Library/ArmLib/AArch64/AArch64Mmu.c
>> @@ -457,7 +457,11 @@ FillTranslationTable (
>>        RegionStart += BlockEntrySize;
>>        RemainingRegionLength -= BlockEntrySize;
>>        BlockEntry++;
>> -    } while ((RemainingRegionLength >= BlockEntrySize) && (BlockEntry <= 
>> LastBlockEntry));
>> +    // Break the inner loop when next block is a table
>> +    // Rerun GetBlockEntryListFromAddress to avoid page table memory leak
>> +    } while ((RemainingRegionLength >= BlockEntrySize) &&
>> +             (BlockEntry <= LastBlockEntry) &&
>> +             !(TableLevel != 3 && (*BlockEntry & TT_TYPE_MASK) == 
>> TT_TYPE_TABLE_ENTRY));
>
> Could we get a 'if (<condition>) break;' inside the loop instead of
> folding it into the while() condition?
>

I fixed this up myself when committing.

Series committed as SVN r18421 .. r18425

Thanks!

-- 
Ard.
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to