On 9/11/26 21:36, Lorenzo Stoakes (ARM) wrote:
> When an anonymous mapping is collapsed for THP, a PTE page table is
> 'deposited' with the installed PMD entry.

Right. Or when we allocate an anon THP.

> 
> This is done in order that a split can be performed without needing to
> allocate additional memory.
> 
> The freeing occurs in zap_deposited_table() and is done directly without
> any delay via pte_free().
> 
> This is currently not a problem as existing page table walks are protected
> by the mmap or anon rmap lock.

Or VMA lock?

> 
> However this becomes problematic in a future where RCU-only page table
> walkers exist, as there is nothing to prevent a page table walker that
> started the walk prior to collapse having its PTE table freed underneath
> it.


Wait, but wouldn't it be really problematic to punch a page table that is still
being walked into the deposited list where it can just be allocated from another
PMD->PTE split?

Note that pgtable_trans_huge_withdraw() just dequeues *some* PTE page table in
the list attached to the PMD table.

Something is odd here.

-- 
Cheers,

David

Reply via email to