mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Petr Mladek <pmladek@suse.com>
To: Miroslav Benes <mbenes@suse.cz>
Cc: Jiri Kosina <jikos@kernel.org>,
	Josh Poimboeuf <jpoimboe@redhat.com>,
	Jason Baron <jbaron@akamai.com>,
	Joe Lawrence <joe.lawrence@redhat.com>,
	Evgenii Shatokhin <eshatokhin@virtuozzo.com>,
	live-patching@vger.kernel.org, linux-kernel@vger.kernel.org,
	Jessica Yu <jeyu@kernel.org>
Subject: Re: [PATCH v14 03/11] livepatch: Consolidate klp_free functions
Date: Tue, 4 Dec 2018 15:00:07 +0100	[thread overview]
Message-ID: <20181204140007.si7l2glbsgaj2dbf@pathway.suse.cz> (raw)
In-Reply-To: <alpine.LSU.2.21.1812031542540.22317@pobox.suse.cz>

On Mon 2018-12-03 15:59:57, Miroslav Benes wrote:
> On Thu, 29 Nov 2018, Petr Mladek wrote:
> 
> > -static int klp_init_patch(struct klp_patch *patch)
> > +/* Init operations that must succeed before klp_free_patch() can be called. */
> > +static int klp_init_patch_before_free(struct klp_patch *patch)
> 
> There is no klp_free_patch() now, so the comment is not correct. Also I 
> don't know if the function name is ideal, but I don't have a better one.
> 
> >  {
> >  	struct klp_object *obj;
> > -	int ret;
> > +	struct klp_func *func;
> >  
> >  	if (!patch->objs)
> >  		return -EINVAL;
> >  
> > -	mutex_lock(&klp_mutex);
> > -
> > +	INIT_LIST_HEAD(&patch->list);
> > +	patch->kobj_alive = false;
> >  	patch->enabled = false;
> >  	init_completion(&patch->finish);
> >  
> > -	ret = kobject_init_and_add(&patch->kobj, &klp_ktype_patch,
> > -				   klp_root_kobj, "%s", patch->mod->name);
> > +	klp_for_each_object(patch, obj) {
> > +		if (!obj->funcs)
> > +			return -EINVAL;
> > +
> > +		obj->kobj_alive = false;
> > +
> > +		klp_for_each_func(obj, func)
> > +			func->kobj_alive = false;
> > +	}
> > +
> > +	return 0;
> > +}
> > +
> > +static int klp_init_patch(struct klp_patch *patch)
> > +{
> > +	struct klp_object *obj;
> > +	int ret;
> > +
> > +	mutex_lock(&klp_mutex);
> > +
> > +	ret = klp_init_patch_before_free(patch);
> >  	if (ret) {
> >  		mutex_unlock(&klp_mutex);
> >  		return ret;
> >  	}
> >  
> > +	ret = kobject_init_and_add(&patch->kobj, &klp_ktype_patch,
> > +				   klp_root_kobj, "%s", patch->mod->name);
> > +	if (ret)
> > +		goto free;
> 
> Is this intentional? It should be sufficient (and it was before the patch) to
> unlock the mutex and return ret. We do not need to free anything here. Only
> klp_patch instance was initialized and that is all.

It will get needed later when try_module_get() is moved into
klp_init_patch_before_free(), see the 5th patch. I'll do it
in the right order in v15.

BTW: I remember that I did this by intention. I updated the patchset
step by step according to the feedback. The init_before_free() was
growing and growing. I did many rebases, shuffling changes between
patches, just wanted to be on the safe side, and maybe save one hunk.
But it seems that no shortcut can slip the careful review ;-)


> Otherwise it looks good. kobj_alive feels safer than state_initialized.

Yup.

Best Regards,
Petr

  reply	other threads:[~2018-12-04 14:00 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-29  9:44 [PATCH v14 00/11] livepatch: Atomic replace feature Petr Mladek
2018-11-29  9:44 ` [PATCH v14 01/11] livepatch: Change unsigned long old_addr -> void *old_func in struct klp_func Petr Mladek
2018-12-03 13:24   ` Miroslav Benes
2018-12-05 18:45   ` Joe Lawrence
2018-12-06 11:08   ` Alice Ferrazzi
2018-11-29  9:44 ` [PATCH v14 02/11] livepatch: Shuffle klp_enable_patch()/klp_disable_patch() code Petr Mladek
2018-12-03 13:36   ` Miroslav Benes
2018-12-05 18:45   ` Joe Lawrence
2018-11-29  9:44 ` [PATCH v14 03/11] livepatch: Consolidate klp_free functions Petr Mladek
2018-12-03 14:59   ` Miroslav Benes
2018-12-04 14:00     ` Petr Mladek [this message]
2018-12-13 22:35     ` Josh Poimboeuf
2018-12-14  9:37       ` Miroslav Benes
2018-12-05 19:02   ` Joe Lawrence
2018-12-06  8:15     ` Petr Mladek
2018-12-06 14:23       ` Joe Lawrence
2018-12-13 22:10   ` Josh Poimboeuf
2018-12-14  9:32     ` Petr Mladek
2018-12-14 14:23       ` Josh Poimboeuf
2018-11-29  9:44 ` [PATCH v14 04/11] livepatch: Refuse to unload only livepatches available during a forced transition Petr Mladek
2018-12-03 15:29   ` Miroslav Benes
2018-12-06  8:46     ` Petr Mladek
2018-12-06  9:18       ` Miroslav Benes
2018-12-05 19:05   ` Joe Lawrence
2018-12-13 22:17   ` Josh Poimboeuf
2018-11-29  9:44 ` [PATCH v14 05/11] livepatch: Simplify API by removing registration step Petr Mladek
2018-12-04 12:54   ` Miroslav Benes
2018-12-04 14:47     ` Petr Mladek
2018-12-04 15:32       ` Miroslav Benes
2018-12-05 19:32   ` Joe Lawrence
2018-12-06  8:28     ` Petr Mladek
2018-12-06  9:23       ` Miroslav Benes
2018-12-06 10:14         ` Petr Mladek
2018-12-06 14:36           ` Joe Lawrence
2018-12-13 22:29             ` Josh Poimboeuf
2018-12-14  9:40               ` Petr Mladek
2018-12-14 14:24                 ` Josh Poimboeuf
2019-01-03 11:47     ` Petr Mladek
2018-12-13 22:46   ` Josh Poimboeuf
2018-12-14 10:02     ` Petr Mladek
2018-12-14 14:27       ` Josh Poimboeuf
2018-11-29  9:44 ` [PATCH v14 06/11] livepatch: Use lists to manage patches, objects and functions Petr Mladek
2018-12-04 14:13   ` Miroslav Benes
2018-12-05 19:34   ` Joe Lawrence
2018-11-29  9:44 ` [PATCH v14 07/11] livepatch: Add atomic replace Petr Mladek
2018-12-04 15:27   ` Miroslav Benes
2018-12-05 19:37   ` Joe Lawrence
2018-12-13 22:55   ` Josh Poimboeuf
2018-12-17 15:27     ` Petr Mladek
2019-01-03 12:47       ` Petr Mladek
2019-01-03 13:37         ` Josh Poimboeuf
2018-11-29  9:44 ` [PATCH v14 08/11] livepatch: Remove Nop structures when unused Petr Mladek
2018-12-04 16:08   ` Miroslav Benes
2018-12-05 20:17   ` Joe Lawrence
2018-12-13 23:00   ` Josh Poimboeuf
2018-12-17 15:54     ` Petr Mladek
2018-12-17 16:11       ` Josh Poimboeuf
2018-11-29  9:44 ` [PATCH v14 09/11] livepatch: Atomic replace and cumulative patches documentation Petr Mladek
2018-12-04 16:12   ` Miroslav Benes
2018-12-05 20:20   ` Joe Lawrence
2018-11-29  9:44 ` [PATCH v14 10/11] livepatch: Remove ordering and refuse loading conflicting patches Petr Mladek
2018-12-05 10:27   ` Miroslav Benes
2018-12-05 20:24   ` Joe Lawrence
2018-12-13 23:06   ` Josh Poimboeuf
2018-12-17 16:07     ` Petr Mladek
2018-12-17 16:27       ` Josh Poimboeuf
2018-12-18  8:51         ` Petr Mladek
2018-11-29  9:44 ` [PATCH v14 11/11] selftests/livepatch: introduce tests Petr Mladek
2018-12-05 11:38   ` Miroslav Benes
2018-12-05 20:27   ` Joe Lawrence
2018-12-08 16:54   ` Alice Ferrazzi
2018-12-05 20:49 ` [PATCH v14 00/11] livepatch: Atomic replace feature Joe Lawrence
2018-12-06  7:54   ` Petr Mladek
2018-12-06  9:32     ` Miroslav Benes
2018-12-06 10:15       ` Petr Mladek
2018-12-06 12:37         ` Petr Mladek
2018-12-06 14:29           ` Joe Lawrence

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181204140007.si7l2glbsgaj2dbf@pathway.suse.cz \
    --to=pmladek@suse.com \
    --cc=eshatokhin@virtuozzo.com \
    --cc=jbaron@akamai.com \
    --cc=jeyu@kernel.org \
    --cc=jikos@kernel.org \
    --cc=joe.lawrence@redhat.com \
    --cc=jpoimboe@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=live-patching@vger.kernel.org \
    --cc=mbenes@suse.cz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®