Re: [PATCH v17 11/26] x86/mm: Update ptep_set_wrprotect() and pmdp_set_wrprotect() for transition from _PAGE_DIRTY to _PAGE_COW

From: Yu, Yu-cheng
Date: Tue Jan 26 2021 - 19:19:40 EST


On 1/26/2021 2:24 AM, Borislav Petkov wrote:
On Mon, Jan 25, 2021 at 02:18:37PM -0800, Yu, Yu-cheng wrote:
For example, when a thread reads a W=1, D=0 PTE and before changing it to
W=0,D=0, another thread could have written to the page and the PTE is W=1,
D=1 now. When try_cmpxchg() detects the difference, old_pte is read again.

None of that is mentioned in the comment above it and if anything,
*that* is what should be explained there - not some guarantee about some
processors which doesn't even apply here.

Also, add the fact that try_cmpxchg() will update old_pte with any
modified bits - D=1 for example - when it fails. As Peter just explained
to me on IRC.

Thx.


Yes, I will fix it. Thanks!