Messages in this thread | | | Date | Tue, 7 Apr 2020 22:50:42 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH 4/4] x86,module: Detect CRn and DRn manipulation |
| |
On Tue, Apr 07, 2020 at 01:27:45PM -0700, Nadav Amit wrote: > > On Apr 7, 2020, at 12:38 PM, Peter Zijlstra <peterz@infradead.org> wrote: > > > > On Tue, Apr 07, 2020 at 11:55:21AM -0700, Nadav Amit wrote: > >>> On Apr 7, 2020, at 4:02 AM, Peter Zijlstra <peterz@infradead.org> wrote: > >>> > >>> Since we now have infrastructure to analyze module text, disallow > >>> modules that write to CRn and DRn registers. > >> > >> Assuming the kernel is built without CONFIG_PARAVIRT, what is the right way > >> for out-of-tree modules to write to CRs? Let’s say CR2? > > > > Most of them there is no real justification for ever writing to. CR2 I > > suppose we can have an exception for given a sane rationale for why > > you'd need to rewrite the fault address. > > For the same reason that KVM writes to CR2 - to restore CR2 before entering > a guest, since CR2 not architecturally loaded from the VMCS. I suspect there > are additional use-cases which are not covered by the kernel interfaces.
So I'm not much of a virt guy (clearly), and *groan*, that's horrible. I'll go make an exception for CR2.
| |