Hello, The 1st patch moves module_put() to release handler of klp_patch kobject. The 2nd patch changes to free klp_patch and other kobjects without klp_mutex. The 3rd patch switches to synchronous kobject release for klp_patch. V4: - add freeing klp_patch after klp_enable_patch() returns, since patch still can be freed there in case of ->replace is set V3: - one line fix on check of list_empty() in enabled_store(), 3/3 V2: - remove enabled attribute before deleting this klp_patch kobject, for avoiding deadlock in deleting me Ming Lei (3): livepatch: remove 'struct completion finish' from klp_patch livepatch: free klp_patch object without holding klp_mutex livepatch: free klp_patch object synchronously include/linux/livepatch.h | 2 - kernel/livepatch/core.c | 73 +++++++++++++++++------------------ kernel/livepatch/core.h | 3 +- kernel/livepatch/transition.c | 23 ++++++++--- kernel/livepatch/transition.h | 2 +- 5 files changed, 54 insertions(+), 49 deletions(-) -- 2.31.1