Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753848AbbDAOki (ORCPT ); Wed, 1 Apr 2015 10:40:38 -0400 Received: from mail-ob0-f171.google.com ([209.85.214.171]:35440 "EHLO mail-ob0-f171.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753824AbbDAOkh (ORCPT ); Wed, 1 Apr 2015 10:40:37 -0400 MIME-Version: 1.0 In-Reply-To: References: Date: Wed, 1 Apr 2015 22:40:19 +0800 Message-ID: Subject: Re: [PATCH] livepatch: Enhance livepatch to support remove patch module dynamically From: Minfei Huang To: Jiri Kosina Cc: jpoimboe@redhat.com, sjenning@redhat.com, vojtech@suse.cz, live-patching@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1698 Lines: 54 2015-04-01 22:13 GMT+08:00 Jiri Kosina : > On Wed, 1 Apr 2015, Minfei Huang wrote: > >> > > diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c >> > > index 3f9f1d6..0266950 100644 >> > > --- a/kernel/livepatch/core.c >> > > +++ b/kernel/livepatch/core.c >> > > @@ -502,6 +502,17 @@ static int __klp_disable_patch(struct klp_patch *patch) >> > > return 0; >> > > } >> > > >> > > +static int __klp_disable_patch_nolock(struct klp_patch *patch) >> > > +{ >> > > + int ret = 0; >> > > + >> > > + ret = __klp_disable_patch(patch); >> > > + if (ret) >> > > + return ret; >> > > + module_put(patch->mod); >> > > + return ret; >> > > +} >> > > + >> > >> > Your patch doesn't solve the problem at all. >> > >> > There is no guarantee that once __klp_disable_patch() returns noone is >> > using the old code any more. >> > >> >> Yes, thanks. >> >> The __klp_disable_patch only guarantees that we will never call the >> function in patch module. For now, patch module can never be removed >> from the kernel once it was loaded. It may be inconvenience if we want >> re-load a new patch module replace the old patch module. > > Patch stacking is possible though. > How about check the stack when start to remove the patch module? We can use the interface stop_machine to hang other CPU, then check and remove if no function in patch module is used. Thanks Minfei > -- > Jiri Kosina > SUSE Labs -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/