From: "Roger Pau Monné" <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Ross Lagerwall <ross.lagerwall@citrix.com>,
xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2 2/2] livepatch: refuse to resolve symbols that belong to init sections
Date: Mon, 22 Apr 2024 09:54:28 +0200 [thread overview]
Message-ID: <ZiYXtJcefv-iMpAj@macbook> (raw)
In-Reply-To: <002fac06-d867-46cc-89c4-9ebe2d68eaf2@suse.com>
On Fri, Apr 19, 2024 at 04:34:41PM +0200, Jan Beulich wrote:
> On 19.04.2024 12:50, Roger Pau Monné wrote:
> > On Fri, Apr 19, 2024 at 12:15:19PM +0200, Jan Beulich wrote:
> >> On 19.04.2024 12:02, Roger Pau Monne wrote:
> >>> Livepatch payloads containing symbols that belong to init sections can only
> >>> lead to page faults later on, as by the time the livepatch is loaded init
> >>> sections have already been freed.
> >>>
> >>> Refuse to resolve such symbols and return an error instead.
> >>>
> >>> Note such resolutions are only relevant for symbols that point to undefined
> >>> sections (SHN_UNDEF), as that implies the symbol is not in the current payload
> >>> and hence must either be a Xen or a different livepatch payload symbol.
> >>>
> >>> Do not allow to resolve symbols that point to __init_begin, as that address is
> >>> also unmapped. On the other hand, __init_end is not unmapped, and hence allow
> >>> resolutions against it.
> >>>
> >>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> >>> ---
> >>> Changes since v1:
> >>> - Fix off-by-one in range checking.
> >>
> >> Which means you addressed Andrew's comment while at the same time extending
> >> the scope of ...
> >>
> >>> @@ -310,6 +311,21 @@ int livepatch_elf_resolve_symbols(struct livepatch_elf *elf)
> >>> break;
> >>> }
> >>> }
> >>> +
> >>> + /*
> >>> + * Ensure not an init symbol. Only applicable to Xen symbols, as
> >>> + * livepatch payloads don't have init sections or equivalent.
> >>> + */
> >>> + else if ( st_value >= (uintptr_t)&__init_begin &&
> >>> + st_value < (uintptr_t)&__init_end )
> >>> + {
> >>> + printk(XENLOG_ERR LIVEPATCH
> >>> + "%s: symbol %s is in init section, not resolving\n",
> >>> + elf->name, elf->sym[i].name);
> >>
> >> ... what I raised concern about (and I had not seen any verbal reply to that,
> >> I don't think).
> >
> > I've extended the commit message to explicitly mention the handling of
> > bounds for __init_{begin,end} checks. Let me know if you are not fine
> > with it (or maybe you expected something else?).
>
> Well, you mention the two symbols you care about, but you don't mention
> at all that these two may alias other symbols which might be legal to
> reference from a livepatch.
I'm having a hard time understanding why a livepatch would want to
reference those, or any symbol in the .init sections for that matter.
__init_{begin,end} are exclusively used to unmap the init region after
boot. What's the point in livepatch referencing data that's no
longer there? The only application I would think of is to calculate
some kind of offsets, but that would better be done using other
symbols instead.
Please bear with me, it would be easier for me to understand if you
could provide a concrete example.
Thanks, Roger.
next prev parent reply other threads:[~2024-04-22 7:54 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-19 10:02 [PATCH v2 0/2] livepatch: make symbol resolution more robust Roger Pau Monne
2024-04-19 10:02 ` [PATCH v2 1/2] xen: introduce header file with section related symbols Roger Pau Monne
2024-04-19 10:08 ` Andrew Cooper
2024-04-19 10:12 ` Jan Beulich
2024-04-19 10:16 ` Andrew Cooper
2024-04-19 14:32 ` Jan Beulich
2024-04-23 12:25 ` Jan Beulich
2024-04-23 13:17 ` Roger Pau Monné
2024-04-19 10:02 ` [PATCH v2 2/2] livepatch: refuse to resolve symbols that belong to init sections Roger Pau Monne
2024-04-19 10:10 ` Andrew Cooper
2024-04-19 10:48 ` Roger Pau Monné
2024-04-19 10:15 ` Jan Beulich
2024-04-19 10:50 ` Roger Pau Monné
2024-04-19 14:34 ` Jan Beulich
2024-04-22 7:54 ` Roger Pau Monné [this message]
2024-04-22 8:25 ` Jan Beulich
2024-04-22 10:49 ` Roger Pau Monné
2024-04-22 10:57 ` Jan Beulich
2024-04-22 11:34 ` Roger Pau Monné
2024-04-22 11:51 ` Jan Beulich
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=ZiYXtJcefv-iMpAj@macbook \
--to=roger.pau@citrix.com \
--cc=jbeulich@suse.com \
--cc=ross.lagerwall@citrix.com \
--cc=xen-devel@lists.xenproject.org \
/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.