On Thu, Oct 01, 2026 at 11:20:17AM -0400, Zi Yan wrote: > On Thu Sep 17, 2026 at 12:22 PM EDT, Lorenzo Stoakes (ARM) wrote: > > Currently there's a confusing mess around VMA_LOCKED_BIT and > > VMA_LOCKONFAULT_BIT. > > > > It is permitted for drivers to set any flags they like, with the VMA > > already possessing lock flags. > > > > This results in the absurd situation of a VMA possessing both > > VMA_SPECIAL_FLAGS and VMA_LOCKED_MASK flags, which is not permitted. > > > > This has resulted in mlock_vma_folio() having a very silly check for this > > scenario to work around it. > > > > There is no need for this - just clear the flags before invoking the hook > > and reinstate them afterwards if they are required. > > > > Nothing relies upon this being set during the mmap operation. > > > > mmap_prepare is unaffected by this so requires no fix. > > > > Signed-off-by: Lorenzo Stoakes (ARM) <[email protected]> > > --- > > mm/internal.h | 9 +-------- > > mm/vma.c | 14 ++++++++++++++ > > 2 files changed, 15 insertions(+), 8 deletions(-) > > > <snip> > > > + /* If VMA flags still valid for locked mask, reinstate. */ > > + if (vma_supports_mlock(vma)) { > > + const vma_flags_t mask = > > + vma_flags_and_mask(&map->vma_flags, > > + VMA_LOCKED_MASK); > > + > > + vma_set_flags_mask(vma, mask); > > It took me a while to figure out vma_set_flags_mask() is an OR > operation.
Yeah naming is hard :) Let me add a comment here though because it's kinda a bit unusual. > > > + } > > + > > map->vma_flags = vma->flags; > > > > return 0; > > Otherwise, LGTM. > > Reviewed-by: Zi Yan <[email protected]> Thanks! > > > > -- > Best Regards, > Yan, Zi > -- Cheers, Lorenzo
