|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen/x86: Remap text/data/bss with appropriate permissions
>>> On 17.03.16 at 13:43, <andrew.cooper3@xxxxxxxxxx> wrote:
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -529,9 +529,33 @@ static void noinline init_done(void)
> }
> else
> {
> + /* Mark .text as RX (avoiding the first 2M superpage). */
> + map_pages_to_xen(XEN_VIRT_START + MB(2),
> + PFN_DOWN(__pa(XEN_VIRT_START + MB(2))),
> + PFN_DOWN(__2M_text_end -
> + (const char *)(XEN_VIRT_START + MB(2))),
> + PAGE_HYPERVISOR_RX);
> +
> + /* Mark .rodata as RO. */
> + map_pages_to_xen((unsigned long)&__2M_rodata_start,
> + PFN_DOWN(__pa(__2M_rodata_start)),
> + PFN_DOWN(__2M_rodata_end - __2M_rodata_start),
> + PAGE_HYPERVISOR_RO);
> +
> + /* Free and reuse .init. */
> destroy_xen_mappings((unsigned long)&__init_begin,
> (unsigned long)&__init_end);
> init_xenheap_pages(__pa(__init_begin), __pa(__init_end));
> +
> + /* Mark .data and .bss as RW. */
> + map_pages_to_xen((unsigned long)&__2M_rwdata_start,
> + PFN_DOWN(__pa(__2M_rwdata_start)),
> + PFN_DOWN(__2M_rwdata_end - __2M_rwdata_start),
> + PAGE_HYPERVISOR_RW);
> +
> + /* Drop the remaining mappings in the shattered superpage. */
> + destroy_xen_mappings((unsigned long)&__2M_rwdata_end,
> + ROUNDUP((unsigned long)&__2M_rwdata_end,
> MB(2)));
> }
I think this would be more appropriate to add to some __init
function (which the discarding of .init.* naturally can't live in).
Also - do we really want to make this code dependent on
map_pages_to_xen() not intermediately zapping the mappings
being changed?
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |