On Fri, Mar 19, 2021 at 10:24:03PM +0300, Dmitry Osipenko wrote: > 19.03.2021 22:03, Minchan Kim пишет: > > On Fri, Mar 19, 2021 at 09:48:11PM +0300, Dmitry Osipenko wrote: > >> 19.03.2021 21:21, Minchan Kim пишет: > >>> On Fri, Mar 19, 2021 at 08:56:06PM +0300, Dmitry Osipenko wrote: > >>>> 19.03.2021 19:30, Minchan Kim пишет: > >>>>> +static void cma_kobj_release(struct kobject *kobj) > >>>>> +{ > >>>>> + struct cma_kobject *cma_kobj = container_of(kobj, struct cma_kobject, kobj); > >>>>> + > >>>>> + kfree(cma_kobj); > >>>>> +} > >>>> > >>>> Oh, wait.. I think this kfree wrong since cma_kobj belongs to the array. > >>> > >>> Oh, good spot. Let me use kzalloc. > >>> > >> > >> Thinking a bit more about this.. it looks like actually it should be > >> better to get back to the older variant of cma_stat, but allocate at the > >> time of CMA initialization, rather than at the time of sysfs > >> initialization. Then the cma_stat will be decoupled from the cma struct > > > > IIRC, the problem was slab was not initiaized at CMA init point. > > That's why I liked your suggestion. > > Alright, if CMA init time is a problem, then the recent variant should > be okay. > > >> and cma_stat will be a self-contained object. > > > > Yeah, self-contained is better but it's already weird to > > have differnt lifetime for one object since CMA object > > never die, technically. > > > > Indeed. > > I found the Greg's original argument and not sure that it's really > worthwhile to worry about the copycats since this is not a driver's code.. > > Maybe we could just add a clarifying comment for the kobj, telling why > it's okay for CMA. Greg, doesn't it sound like a good compromise to you? Please no.