From: Josh Poimboeuf <jpoimboe@redhat.com>
To: Petr Mladek <pmladek@suse.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: Thu, 18 Oct 2018 07:58:24 -0500 [thread overview]
Message-ID: <20181018125824.ms5zovmsnikv3bgt@treble> (raw)
In-Reply-To: <20181018111153.qcmvidttifi57u45@pathway.suse.cz>
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.
--
Josh
next prev parent reply other threads:[~2018-10-18 12:58 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 [this message]
2018-10-24 11:28 ` Petr Mladek
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=20181018125824.ms5zovmsnikv3bgt@treble \
--to=jpoimboe@redhat.com \
--cc=eshatokhin@virtuozzo.com \
--cc=jbaron@akamai.com \
--cc=jikos@kernel.org \
--cc=joe.lawrence@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=live-patching@vger.kernel.org \
--cc=mbenes@suse.cz \
--cc=pmladek@suse.com \
/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).