On Tue 2019-04-30 10:15:34, Tobin C. Harding wrote: > The correct cleanup function after a call to kobject_init_and_add() has > succeeded is kobject_del() _not_ kobject_put(). kobject_del() calls > kobject_put(). Really? I see only kobject_put(kobj->parent) in kobject_del. It decreases a reference of the _parent_ object and not the given one. Also the section "Kobject removal" in Documentation/kobject.txt says that kobject_del() is for two-stage removal. kobject_put() still needs to get called at a later time. IMHO, this patch causes that kobject_put() would never get called. That said, we could probably make the removal a bit cleaner by using kobject_del() in klp_free_patch_start() and kobject_put() in klp_free_patch_finish(). But I have to think more about it. Best Regards, Petr