linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Petr Mladek <pmladek@suse.com>
To: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Jiri Kosina <jikos@kernel.org>, Miroslav Benes <mbenes@suse.cz>,
	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
Subject: Re: [PATCH v13 02/12] livepatch: Helper macros to define livepatch structures
Date: Wed, 24 Oct 2018 13:28:22 +0200	[thread overview]
Message-ID: <20181024112822.tam6bal3hnrrgj5m@pathway.suse.cz> (raw)
In-Reply-To: <20181018125824.ms5zovmsnikv3bgt@treble>

On Thu 2018-10-18 07:58:24, Josh Poimboeuf wrote:
> On Thu, Oct 18, 2018 at 01:11:53PM +0200, Petr Mladek wrote:
> > On Wed 2018-10-17 13:17:56, Josh Poimboeuf wrote:
> > > On Mon, Oct 15, 2018 at 02:37:03PM +0200, Petr Mladek wrote:
> > > > The definition of struct klp_func might be a bit confusing.
> > > > The original function is defined by name as a string.
> > > > The new function is defined by name as a function pointer
> > > > casted to unsigned long.
> > > > 
> > > > This patch adds helper macros that hide the different types.
> > > > The functions are defined just by the name. For example:
> > > 
> > > On one hand, these macros are kind of nice, because they do the function
> > > pointer casting for the user.
> > > 
> > > On the other hand, they hide the field names, which hurts readability a
> > > bit.  For example, it would be easy to accidentally assign the wrong
> > > callback function.
> > 
> > I am not a big fan of the macros either.
> > 
> > 
> > > Also, it's unfortunate that these macros are needed in the first place.
> > > 
> > > What if we just change new_addr (and old_addr) to be 'void *'?  Then the
> > > macros wouldn't be as useful, and we could just get rid of them.
> > 
> > Hmm, I wonder if any change make sense then. The above proposal might
> > just exchange one confusion with another one:
> > 
> >    + I would expect that a variable called addr is of the type
> >      unsigned long
> > 
> >    + we would need casting when calling ftrace API
> > 
> >    + .new_addr = function_xxx looks a bit weird and it will
> >      be used many times in all livepatch sources.
> 
> Fair points.  Instead of changing new_func to new_addr, how about we
> leave it alone, and instead change 'unsigned long old_addr' to 'void
> *old_func'?
> 
> That would give us consistent naming internally, while making the
> external interface more sensible and cast-free.
> 
> We'd still have to cast when passing to the ftrace API, but IMO it would
> be worth it.

I am fine with this. I will do this in v14 unless anyone complains ;-)

Best Regards,
Petr

  reply	other threads:[~2018-10-24 11:28 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-15 12:37 [PATCH v13 00/12] livepatch: Atomic replace feature Petr Mladek
2018-10-15 12:37 ` [PATCH v13 01/12] livepatch: Change void *new_func -> unsigned long new_addr in struct klp_func Petr Mladek
2018-10-15 12:37 ` [PATCH v13 02/12] livepatch: Helper macros to define livepatch structures Petr Mladek
2018-10-17 18:17   ` Josh Poimboeuf
2018-10-18 11:11     ` Petr Mladek
2018-10-18 12:58       ` Josh Poimboeuf
2018-10-24 11:28         ` Petr Mladek [this message]
2018-11-21 12:17           ` Miroslav Benes
2018-10-15 12:37 ` [PATCH v13 03/12] livepatch: Shuffle klp_enable_patch()/klp_disable_patch() code Petr Mladek
2018-10-15 12:37 ` [PATCH v13 04/12] livepatch: Consolidate klp_free functions Petr Mladek
2018-10-17 18:22   ` Josh Poimboeuf
2018-10-18 11:40     ` Petr Mladek
2018-11-21 13:59   ` Miroslav Benes
2018-11-21 14:40     ` Petr Mladek
2018-10-15 12:37 ` [PATCH v13 05/12] livepatch: Refuse to unload only livepatches available during a forced transition Petr Mladek
2018-10-17 18:35   ` Josh Poimboeuf
2018-10-18 12:09     ` Petr Mladek
2018-10-18 13:00       ` Josh Poimboeuf
2018-10-15 12:37 ` [PATCH v13 06/12] livepatch: Simplify API by removing registration step Petr Mladek
2018-10-17 19:06   ` Josh Poimboeuf
2018-10-18 12:33     ` Petr Mladek
2018-10-15 12:37 ` [PATCH v13 07/12] livepatch: Use lists to manage patches, objects and functions Petr Mladek
2018-10-17 20:31   ` Josh Poimboeuf
2018-10-18 12:34     ` Petr Mladek
2018-10-15 12:37 ` [PATCH v13 08/12] livepatch: Add atomic replace Petr Mladek
2018-11-23 12:00   ` Miroslav Benes
2018-10-15 12:37 ` [PATCH v13 09/12] livepatch: Remove Nop structures when unused Petr Mladek
2018-10-17 20:48   ` Josh Poimboeuf
2018-10-18 12:40     ` Petr Mladek
2018-10-15 12:37 ` [PATCH v13 10/12] livepatch: Atomic replace and cumulative patches documentation Petr Mladek
2018-10-15 12:37 ` [PATCH v13 11/12] livepatch: Remove ordering and refuse loading conflicting patches Petr Mladek
2018-10-15 12:37 ` [PATCH v13 12/12] selftests/livepatch: introduce tests Petr Mladek
2018-10-15 19:46   ` Joe Lawrence
2018-10-17 20:48   ` Josh Poimboeuf
2018-10-18 13:34 ` [PATCH v13 00/12] livepatch: Atomic replace feature Josh Poimboeuf

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=20181024112822.tam6bal3hnrrgj5m@pathway.suse.cz \
    --to=pmladek@suse.com \
    --cc=eshatokhin@virtuozzo.com \
    --cc=jbaron@akamai.com \
    --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;
as well as URLs for NNTP newsgroup(s).