> > > > > > +void intel_gt_sysfs_register(struct intel_gt *gt) > > > > > > +{ > > > > > > + struct kobject *parent = kobject_get(gt_get_parent_obj(gt)); > > > > > > + int ret; > > > > > > + > > > > and if I need to call kobject_put at the end. If for some reason > > the files have failed to be initialized, I would have an > > unbalanced put and a warning would be printed. > > > > I'll summarize in pseudo code: > > > > intel_gt_sysfs_register() > > { > > kobject_init_and_add(sysfs_root...); /* which calls kobject_get() inside */ > > if (fails) > > kobject_put(sysfs_root); /* reference goes to '0' */ > > } > > > > intel_gt_sysfs_unregister() > > { > > option1: I don't call kobject_put(), I have an unbalanced > > situation as you reviewed in patch 1. > > > > option2: I call kobject_put(), if it did fail during init > > there is an unbalanced situation, which is > > handled but an annoying WARN() is issued. > > > > option3: I check if "state_initialized" which I suppose > > has been properly initialised during declaration > > (maybe too paranoic?) and call _put() > > accordingly > > } > > Yes you are right, I confused the two parents again. :I this little things are good for jambling the brain up :) > Okay then, is the extra kobject_get/put on the parent > (kobject_get(gt_get_parent_obj(gt) - this one) needed? I do not see any strong reason for calling kobject_get, I do it only because I am creating files in there and I don't want anyone to free those without my permission. Otherwise, the creation and the destruction of the son object would take care of the refcount. Will it ever happen that parent will be destroyed before I have time to release the files? I don't think so, but I do it more for the form than for the use. In the sense that "I have stuff in there and I declare I have stuff in there and I declare when I won't need them anymore". Andi _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx