From: Petr Mladek <pmladek@suse.com>
To: Joe Lawrence <joe.lawrence@redhat.com>
Cc: Marcos Paulo de Souza <mpdesouza@suse.com>,
live-patching@vger.kernel.org, jpoimboe@redhat.com,
mbenes@suse.cz, nstange@suse.de
Subject: Re: [PATCH 3/4] livepatch/shadow: Introduce klp_shadow_type structure
Date: Mon, 24 Oct 2022 14:59:31 +0200 [thread overview]
Message-ID: <Y1aMMxCPCEjP5Lc8@alley> (raw)
In-Reply-To: <a0daa94e-a66d-ad14-339c-ed08b3914469@redhat.com>
On Thu 2022-08-25 10:50:20, Joe Lawrence wrote:
> On 7/1/22 3:48 PM, Marcos Paulo de Souza wrote:
> > The shadow variable type will be used in klp_shadow_alloc/get/free
> > functions instead of id/ctor/dtor parameters. As a result, all callers
> > use the same callbacks consistently[*][**].
> >
> > The structure will be used in the next patch that will manage the
> > lifetime of shadow variables and execute garbage collection automatically.
> >
> > [*] From the user POV, it might have been easier to pass $id instead
> > of pointer to struct klp_shadow_type.
> >
> > The problem is that each livepatch registers its own struct
> > klp_shadow_type and defines its own @ctor/@dtor callbacks. It would
> > be unclear what callback should be used. They should be compatible.
> >
> > This problem is gone when each livepatch explicitly uses its
> > own struct klp_shadow_type pointing to its own callbacks.
> >
> > [**] test_klp_shadow_vars.c uses a custom @dtor to show that it was called.
> > The message must be disabled when called via klp_shadow_free_all()
> > because the ordering of freed variables is not well defined there.
> > It has to be done using another hack after switching to
> > klp_shadow_types.
> >
>
> Is the ordering problem new to this patchset? Shadow variables are
> still saved in klp_shadow_hash and I think the only change in this patch
> is that we need to compare through shadow_type and not id directly. Or
> does patch 4/4 change behavior here? Just curious, otherwise this patch
> is pretty straightforward.
The problem is old. klp_shadow_free_all() uses hash_for_each(). It
iterates the hashes sorted by the hash value. The tested arrays are
on stack. The address of the stack is different in every run.
As a result, the hash is always different and the pointers
are sorted in different order.
Best Regards,
Petr
next prev parent reply other threads:[~2022-10-24 14:34 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-01 19:48 [PATCH 0/4] livepatch: Add garbage collection for shadow variables Marcos Paulo de Souza
2022-07-01 19:48 ` [PATCH 1/4] livepatch/shadow: Separate code to get or use pre-allocated shadow variable Marcos Paulo de Souza
2022-07-01 21:01 ` Josh Poimboeuf
2022-07-29 15:06 ` Petr Mladek
2022-07-01 19:48 ` [PATCH 2/4] livepatch/shadow: Separate code removing all shadow variables for a given id Marcos Paulo de Souza
2022-07-29 15:09 ` Petr Mladek
2022-07-01 19:48 ` [PATCH 3/4] livepatch/shadow: Introduce klp_shadow_type structure Marcos Paulo de Souza
2022-07-01 21:04 ` Josh Poimboeuf
2022-07-29 16:07 ` Petr Mladek
2022-08-25 14:50 ` Joe Lawrence
2022-08-25 14:54 ` Joe Lawrence
2022-10-24 13:24 ` Petr Mladek
2022-10-24 12:59 ` Petr Mladek [this message]
2022-07-01 19:48 ` [PATCH 4/4] livepatch/shadow: Add garbage collection of shadow variables Marcos Paulo de Souza
2022-08-25 12:59 ` Petr Mladek
2022-08-25 16:26 ` Joe Lawrence
2022-10-24 15:09 ` Petr Mladek
2022-11-01 11:02 ` Petr Mladek
2022-11-02 12:51 ` Joe Lawrence
2022-11-04 14:44 ` 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=Y1aMMxCPCEjP5Lc8@alley \
--to=pmladek@suse.com \
--cc=joe.lawrence@redhat.com \
--cc=jpoimboe@redhat.com \
--cc=live-patching@vger.kernel.org \
--cc=mbenes@suse.cz \
--cc=mpdesouza@suse.com \
--cc=nstange@suse.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.