Re: hv_hypercall_pg page permissios
From: Peter Zijlstra <peterz@infradead.org>
Date: 2020-06-16 10:32:16
Also in:
lkml
From: Peter Zijlstra <peterz@infradead.org>
Date: 2020-06-16 10:32:16
Also in:
lkml
On Tue, Jun 16, 2020 at 12:24:12PM +0200, Christoph Hellwig wrote:
On Tue, Jun 16, 2020 at 12:23:50PM +0200, Christoph Hellwig wrote:
quoted
quoted
+ hv_hypercall_pg = module_alloc(PAGE_SIZE); if (hv_hypercall_pg == NULL) { wrmsrl(HV_X64_MSR_GUEST_OS_ID, 0); goto remove_cpuhp_state; } + set_memory_ro((unsigned long)hv_hypercall_pg, 1); + set_memory_x((unsigned long)hv_hypercall_pg, 1);The changing of the permissions sucks. I thought about adding a module_alloc_prot with an explicit pgprot_t argument. On x86 alone at least ftrace would also benefit from that.
How would ftrace benefit from a RX permission? We need to actually write to the page first. This HV thing is special in that it lets the host write.
The above is also missing a set_vm_flush_reset_perms.
Ah, indeed. Otherwise we don't clean up properly.