Thread (73 messages) 73 messages, 9 authors, 2018-09-14

Re: [RFC PATCH v3 12/24] x86/mm: Modify ptep_set_wrprotect and pmdp_set_wrprotect for _PAGE_DIRTY_SW

From: Yu-cheng Yu <hidden>
Date: 2018-08-31 15:53:03
Also in: linux-arch, linux-doc, linux-mm, lkml

On Fri, 2018-08-31 at 07:47 -0700, Dave Hansen wrote:
On 08/31/2018 07:33 AM, Yu-cheng Yu wrote:
quoted
Please use the form:

	pte_t new_pte, pte = READ_ONCE(*ptep);
	do {
		new_pte = /* ... */;
	} while (!try_cmpxchg(ptep, &pte, new_pte);
It's probably also worth doing some testing to see if you can detect
the
cost of the cmpxchg.  It's definitely more than the old code.

A loop that does mprotect(PROT_READ) followed by
mprotect(PROT_READ|PROT_WRITE) should do it.
I created the test,

https://github.com/yyu168/cet-smoke-test/blob/quick/quick/mprotect_ben
ch.c

then realized this won't work.

To trigger a race in ptep_set_wrprotect(), we need to fork from one of
three pthread siblings.

Or do we measure only how much this affects fork?
If there is no racing, the effect should be minimal.

Yu-cheng
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help