Thread (73 messages) 73 messages, 8 authors, 2020-07-27

Re: [PATCH RFC V2 17/17] x86/entry: Preserve PKRS MSR across exceptions

From: Thomas Gleixner <hidden>
Date: 2020-07-23 20:23:36
Also in: linux-fsdevel, linux-kselftest, linux-mm, lkml, nvdimm

Dave Hansen [off-list ref] writes:
On 7/23/20 10:08 AM, Andy Lutomirski wrote:
quoted
Suppose some kernel code (a syscall or kernel thread) changes PKRS
then takes a page fault. The page fault handler needs a fresh PKRS.
Then the page fault handler (say a VMA’s .fault handler) changes
PKRS.  The we get an interrupt. The interrupt *also* needs a fresh
PKRS and the page fault value needs to be saved somewhere.

So we have more than one saved value per thread, and thread_struct
isn’t going to solve this problem.
Taking a step back...  This is all true only if we decide that we want
protection keys to provide protection during exceptions and interrupts.
 Right now, the code supports nesting:

	kmap(foo);
		kmap(bar);
		kunmap(bar);
	kunmap(foo);

with a reference count.  So, the nested kmap() will see the count
elevated and do nothing.
Hopefully with a big fat warning if the nested map requires a different
key than the outer one.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help