On Tue, Nov 12, 2024 at 10:52 PM Hugh Dickins <hughd@xxxxxxxxxx> wrote: > > On Tue, 12 Nov 2024, Suren Baghdasaryan wrote: > > On Tue, Nov 12, 2024 at 9:08 PM Hugh Dickins <hughd@xxxxxxxxxx> wrote: > > > On Tue, 12 Nov 2024, Suren Baghdasaryan wrote: > > > > > > > > Thinking about this some more, I don't think this works. I'm relying > > > > on vma_start_read() to stabilize the vma, however the lock I'm taking > > > > is part of the vma which can be reused from under us. So, the lock I'm > > > > taking might be reinitialized after I take the lock... > > > > I need to figure out a way to stabilize the vma in some other manner > > > > before taking this lock. > > > > > > (I'm not paying attention and following the patches, I just happened > > > to notice this remark: forgive me if I'm out of context and have > > > misunderstood, but hope this might help:) > > > > > > But this is exactly the problem SLAB_TYPESAFE_BY_RCU was invented for. > > > You just have to be careful that the locks are initialized only when the > > > slab is first created (allocated from buddy), not reinitialized whenever > > > a new object is allocated from that slab. > > > > Hi Hugh! > > I'm looking into SLAB_TYPESAFE_BY_RCU implementation and trying to > > figure out if initializing the lock in the ctor() of the cache as > > mentioned in the comment here: > > https://elixir.bootlin.com/linux/v6.12-rc7/source/include/linux/slab.h#L127 > > would help my case. I assume that's what you are hinting here? > > Yes, if I'm "hinting", it's because offhand I forget the right names: > "ctor", yes, that sounds right. Just wanted to make sure I understood you correctly. Thanks for confirmation. > > Just grep around for examples of how it is used: there must be plenty > now. but anon_vma is what it was first used for. Yeah, there are plenty of examples now. > > But given the title of this patch, I'm surprised it's new to you. Thinking about issues arising from possible object reuse is indeed new to me, that's why I missed the lock reinitialization issue. I think I know how to fix that now. Thanks, Suren. > > Hugh