On Tue, May 07, 2019 at 02:32:57PM +0200, Miroslav Benes wrote: > On Fri, 3 May 2019, Petr Mladek wrote: > > > kobject_init() always succeeds and sets the reference count to 1. > > It allows to always free the structures via kobject_put() and > > the related release callback. > > > > Note that the custom kobject state handling was used only > > because we did not know that kobject_put() can and actually > > should get called even when kobject_init_and_add() fails. > > > > The patch should not change the existing behavior. > > Pity that the changelog does not describe the change from > kobject_init_and_add() to two-stage kobject init (separate kobject_init() > and kobject_add()). > > Petr changed it, because now each member of new dynamic lists (created in > klp_init_patch_early()) is initialized with kobject_init(), so we do not > have to worry about calling kobject_put() (this is slightly different from > kobj_added). > > It would also be possible to retain kobject_init_and_add() and move it to > klp_init_patch_early(), but it would be uglier in my opinion. kobject_init_and_add() is only there for the "simple" use cases. There's no problem with doing the two-stage process on your own like this, that's exactly what it is there for :) thanks, greg k-h