I don't see why paravirt ops is that much more sensitive than most other kernel code. > It would be a lot safer if we could have the struct paravirt_ops in > protected read-only const memory space, set it up in the core kernel > early on in boot when we play "guess todays hypervisor" and then make > sure it stays in read only (even to kernel) space. By default we don't make anything read only because that would mess up the 2MB kernel mapping. In general i don't think making select code in the kernel read only is a good idea, because as long as you don't protect everything including stacks etc. there will be always attack points where supposedly protected code relies on unprotected state. If someone can write to kernel memory you already lost. And it adds TLB pressure. -Andi