On Wed, 2022-06-08 at 10:07 +0530, Aneesh Kumar K V wrote: > On 6/8/22 12:13 AM, Tim Chen wrote: > ... > > > > > > > + > > > +static void memory_tier_device_release(struct device *dev) > > > +{ > > > + struct memory_tier *tier = to_memory_tier(dev); > > > + > > > > Do we need some ref counts on memory_tier? > > If there is another device still using the same memtier, > > free below could cause problem. > > > > > + kfree(tier); > > > +} > > > + > > > > > ... > > The lifecycle of the memory_tier struct is tied to the sysfs device life > time. ie, memory_tier_device_relese get called only after the last > reference on that sysfs dev object is released. Hence we can be sure > there is no userspace that is keeping one of the memtier related sysfs > file open. > > W.r.t other memory device sharing the same memtier, we unregister the > sysfs device only when the memory tier nodelist is empty. That is no > memory device is present in this memory tier. memory_tier isn't only used by user space. It is used inside kernel too. If some kernel code get a pointer to struct memory_tier, we need to guarantee the pointer will not be freed under us. And as Tim pointed out, we need to use it in hot path (for statistics), so some kind of rcu lock may be good. Best Regards, Huang, Ying