Re: [PATCH 1/1] kasan, vmalloc: avoid lock contention when depopulating vmalloc
From: Andrew Morton
Date: Wed Sep 25 2024 - 16:47:13 EST
On Wed, 25 Sep 2024 21:47:32 +0800 Adrian Huang <adrianhuang0701@xxxxxxxxx> wrote:
>
> ...
>
> From: Adrian Huang <ahuang12@xxxxxxxxxx>
> After re-visiting code path about setting the kasan ptep (pte pointer),
> it's unlikely that a kasan ptep is set and cleared simultaneously by
> different CPUs. So, use ptep_get_and_clear() to get rid of the spinlock
> operation.
"unlikely" isn't particularly comforting. We'd prefer to never corrupt
pte's!
I'm suspecting we need a more thorough solution here.
btw, for a lame fix, did you try moving the spin_lock() into
kasan_release_vmalloc(), around the apply_to_existing_page_range()
call? That would at least reduce locking frequency a lot. Some
mitigation might be needed to avoid excessive hold times.