Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751449AbdGRNAw (ORCPT ); Tue, 18 Jul 2017 09:00:52 -0400 Received: from mx2.suse.de ([195.135.220.15]:38290 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751371AbdGRNAu (ORCPT ); Tue, 18 Jul 2017 09:00:50 -0400 Date: Tue, 18 Jul 2017 15:00:47 +0200 From: Petr Mladek To: Miroslav Benes Cc: Josh Poimboeuf , Joe Lawrence , live-patching@vger.kernel.org, linux-kernel@vger.kernel.org, Jessica Yu , Jiri Kosina Subject: Re: [PATCH v2 1/2] livepatch: introduce shadow variable API Message-ID: <20170718130047.GG3393@pathway.suse.cz> References: <1498664247-12296-1-git-send-email-joe.lawrence@redhat.com> <1498664247-12296-2-git-send-email-joe.lawrence@redhat.com> <20170714004149.6jgg4vxmjsotlkus@treble> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2661 Lines: 75 On Mon 2017-07-17 17:35:38, Miroslav Benes wrote: > On Thu, 13 Jul 2017, Josh Poimboeuf wrote: > > > On Wed, Jun 28, 2017 at 11:37:26AM -0400, Joe Lawrence wrote: > > > > > +Brief API summary > > > +----------------- > > > + > > > +See the full API usage docbook notes in the livepatch/shadow.c > > > +implementation. > > > + > > > +An in-kernel hashtable references all of the shadow variables. These > > > +references are stored/retrieved through a key pair. > > > > "num" is rather vague, how about "key"? As Mirek said in the previous version. "obj" is the key for the hash table. Anyway, I agree that "num" is vague and even confusing. I would suggest to use "id". > > (And note, this and some of the other comments also apply to the code as > > well) > > > > > +* The klp_shadow variable data structure encapsulates both tracking > > > +meta-data and shadow-data: > > > + - meta-data > > > + - obj - pointer to original data > > > > Instead of "original data", how about calling it the "parent object"? > > That describes it better to me at least. "Original data" sounds like > > some of the data might be replaced. > > I agree that "original data" does not sound right. However, we use "parent > object" for vmlinux or a module in our code. But I don't have a better > name and "parent object" sounds good. What about "primary object"? I took inspiration from https://en.wikipedia.org/wiki/Shadow_table > > > + - num - numerical description of new data > > > > "numerical description of new data" sounds a little confusing, how about > > "unique identifier for new data"? Here we come to the "id" ;-) I wonder if each patch should register its own IDs and the size of the data. The API could shout when anyone wants to use a not yet registered ID or when the same ID with another size is being registered. It might increase security. But I am not sure if it is worth it. > > I'm also not sure about the phrase "new data". Maybe something like > > "new data field" would be more descriptive? Or just "new field"? I > > view it kind of like adding a field to a struct. Not a big deal either > > way. > > > > > +void *klp_shadow_attach(void *obj, unsigned long num, void *new_data, > > > + size_t new_size, gfp_t gfp_flags); > > > > It could be just me, but the "new_" prefixes threw me off a little bit. > > The new is implied anyway. How about just "data" and "size"? > > > > And the same comment for the klp_shadow struct. > > I agree with Josh on all of this. You persuaded me that "data" and "size" make sense after all ;-) new_obj would mean that we replace/copy the entire object. Best Regards, Petr