> > +static void __init efi_memmap_free(struct efi_memory_map new_memmap) > > +{ > > + phys_addr_t start, end; > > + unsigned long size = new_memmap.nr_map * new_memmap.desc_size; > > + unsigned int order = get_order(size); > > + > > + start = new_memmap.phys_map; > > + end = start + size; > > + if (new_memmap.late) { > > + __free_pages(pfn_to_page(PHYS_PFN(start)), order); > > + return; > > + } > > + > > + if (memblock_free(start, size)) > > + pr_err("Failed to free mem from %pa to %pa\n", &start, &end); > > Why is this rather large structure passed in by value and not by reference? My bad.. I will change it to pass by reference. > Also, 'new_memmap' naming is confusing - by this time this is a rather old > memmap table we are going to free, right? So naming it 'memmap' would be > fine, right? Yes, that should be fine. I will change it. Regards, Sai