On 20.07.22 20:09, Nadav Amit wrote: > On Jul 20, 2022, at 11:00 AM, David Hildenbrand <david@xxxxxxxxxx> wrote: > >> My patch review skills have seen better days. I thought you'd be >> removing the pte_write() check ... :( Tired eyes ... >> >>> Having said that, I do notice now that pte_mkdirty() should not be done >>> only this condition is fulfilled. Instead we should just have >>> something like: >>> >>> if (will_need) { >>> ptent = pte_mkyoung(ptent); >>> if (pte_write(ptent)) >>> ptent = pte_mkdirty(ptent); >>> } >> >> As can_change_pte_writable() will fail if it stumbles over a !pte_dirty >> page in current code ... so I assume you would have that code before the >> actual pte_mkwrite() logic, correct? > > No, I thought this should go after for 2 reasons: > > 1. You want to allow the PTE to be made writable following the > can_change_pte_writable(). > > 2. You do not want to set a non-writable PTE as dirty, especially since it > might then be used to determine that the PTE can become writable. Doing so > would circumvent cases in which set_page_dirty() needs to be called and > break things down. The I'm confused how can_change_pte_writable() would ever allow for that. Best to show me the code :) -- Thanks, David / dhildenb