Sorry, I didn't notice the counterpart code in FreePages. Then it should be none issue.
Thanks Ard. On 05/26/2015 05:47 PM, Ard Biesheuvel wrote: > On 26 May 2015 at 11:40, Laszlo Ersek <ler...@redhat.com> wrote: >> Ard, >> >> On 05/25/15 05:27, Heyi Guo wrote: >>> Hi folks, >>> >>> I noticed that the number of pages will be extended to 64KB aligned for >>> AARCH64 runtime services memory, like EfiRuntimeServicesCode/Data, >>> AcpiReclaimMemory, etc. However, the caller does not know the real page >>> number that was allocated; if some error occurs and the caller wants to >>> free the runtime memory which was allocated earlier, he can only use >>> EFI_SIZE_TO_PAGES to get the page number of 4KB aligned and up to 15 >>> pages (60KB) memory might be leaked. >>> >>> This is not a critical issue for it is not common to free runtime type >>> memory. But I think it will be better to fix it in some way, e.g. using >>> another macro to calculate page number for runtime memory, documented in >>> UEFI spec, etc. >>> >>> Please let me know your comments, thanks! >> is this perhaps related to the recent-ish patches that adapt allocations >> to the 64KB page size? >> > Yes, it looks that way. But the relevant free path in > MdeModulePkg/Core/Dxe/Mem/Page.c is > > """ > Alignment = EFI_DEFAULT_PAGE_ALLOCATION_ALIGNMENT; > > ASSERT (Entry != NULL); > if (Entry->Type == EfiACPIReclaimMemory || > Entry->Type == EfiACPIMemoryNVS || > Entry->Type == EfiRuntimeServicesCode || > Entry->Type == EfiRuntimeServicesData) { > > Alignment = EFI_ACPI_RUNTIME_PAGE_ALLOCATION_ALIGNMENT; > > } > > if ((Memory & (Alignment - 1)) != 0) { > Status = EFI_INVALID_PARAMETER; > goto Done; > } > > NumberOfPages += EFI_SIZE_TO_PAGES (Alignment) - 1; > NumberOfPages &= ~(EFI_SIZE_TO_PAGES (Alignment) - 1); > > Status = CoreConvertPages (Memory, NumberOfPages, EfiConventionalMemory); > > """ > > so the number of pages being freed is internally rounded up to the > same granularity that was used to do the allocation. > > @Heyi: can you confirm that the FreePages() call returns without an > error in your case? > ------------------------------------------------------------------------------ One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight. http://ad.doubleclick.net/ddm/clk/290420510;117567292;y _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel