Re: [PATCH v2 2/5] binder: Make shrinker rely solely on per-VMA lock
From: Carlos Llamas <cmllamas@google.com>
Date: 2026-06-14 14:11:00
Also in:
linux-mm, lkml
On Fri, Jun 12, 2026 at 07:50:16PM +0000, Alice Ryhl wrote:
On Fri, Jun 12, 2026 at 11:47:59AM -0700, Dave Hansen wrote:quoted
On 6/12/26 10:44, Suren Baghdasaryan wrote:quoted
quoted
It's not impossible, but I do think it is irrelevant. Or at least that the *VMA* is irrelevant in this case. binder_alloc_is_mapped()==false means that the binder VMA is gone. It's not in the maple tree, and it's not coming back. If a VMA is found, it's an impostor.Right, but before your change we were bailing out early. With your change we would be generating the traces and freeing the page. I think that's a functional change. Was that your intention?Yeah, it was intentional. I think the existing behavior is buggy. It also complicates the goal of removing the mmap lock fallback. I've broken that behavior change out into a separate patch. (attached here)I think you can just: 1. do a lock_vma_under_rcu(). 2. if it fails, check binder_alloc_is_mapped(). 3. if still mapped, return LRU_SKIP, otherwise behave like a failed vma_lookup() does today under the mmap read lock.
Right! This is the same suggestion I sent. ... Also, I would _prefer_ if the commit message was more accurate. The mmap_lock fallback was there because of "compatibility", as per-vma locking is technically behind CONFIG_PER_VMA_LOCK. This would be the only part that IMO describes the actual reason for the change:
Now that per-VMA locks are universally available, lock_vma_under_rcu() will not persistently fail. Rely on it alone and simplify the code.
Cheers, -- Carlos Llamas