From: Joe Lawrence <joe.lawrence@redhat.com>
To: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: live-patching@vger.kernel.org, linux-kernel@vger.kernel.org,
Peter Zijlstra <peterz@infradead.org>,
Jessica Yu <jeyu@kernel.org>
Subject: Re: [PATCH v2 2/9] livepatch: Apply vmlinux-specific KLP relocations early
Date: Wed, 22 Apr 2020 21:10:03 -0400 [thread overview]
Message-ID: <20200423011003.GA20432@redhat.com> (raw)
In-Reply-To: <20200420191117.wrjauayeutkpvkwd@treble>
On Mon, Apr 20, 2020 at 02:11:17PM -0500, Josh Poimboeuf wrote:
> On Mon, Apr 20, 2020 at 03:01:41PM -0400, Joe Lawrence wrote:
> > > > ... apply_relocations() is also iterating over the section headers (the
> > > > diff context doesn't show it here, but i is an incrementing index over
> > > > sechdrs[]).
> > > >
> > > > So if there is more than one KLP relocation section, we'll process them
> > > > multiple times. At least the x86 relocation code will detect this and
> > > > fail the module load with an invalid relocation (existing value not
> > > > zero).
> > >
> > > Ah, yes, good catch!
> > >
> >
> > The same test case passed with a small modification to push the foreach
> > KLP section part to a kernel/livepatch/core.c local function and
> > exposing the klp_resolve_symbols() + apply_relocate_add() for a given
> > section to kernel/module.c. Something like following...
>
> I came up with something very similar, though I named them
> klp_apply_object_relocs() and klp_apply_section_relocs() and changed the
> argument order a bit (module first). Since it sounds like you have a
> test, could you try this one?
>
> diff --git a/include/linux/livepatch.h b/include/linux/livepatch.h
> index 533359e48c39..fb1a3de39726 100644
> --- a/include/linux/livepatch.h
> +++ b/include/linux/livepatch.h
>
> [ ... snip ... ]
>
> @@ -245,10 +245,10 @@ static inline void klp_update_patch_state(struct task_struct *task) {}
> static inline void klp_copy_process(struct task_struct *child) {}
>
> static inline
> -int klp_write_relocations(Elf_Ehdr *ehdr, Elf_Shdr *sechdrs,
> - const char *shstrtab, const char *strtab,
> - unsigned int symindex, struct module *pmod,
> - const char *objname)
> +int klp_apply_section_relocs(struct module *pmod, Elf_Shdr *sechdrs,
> + const char *shstrtab, const char *strtab,
> + unsigned int symindex, unsigned int secindex,
> + const char *objname);
^^
Whoops, stray semicolon in !CONFIG_LIVEPATCH case. I found it by
botching my cross-compiling .config, but the build-bot might find it
when you push your branch.
> {
> return 0;
> }
-- Joe
next prev parent reply other threads:[~2020-04-23 1:10 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-17 14:04 [PATCH v2 0/9] livepatch,module: Remove .klp.arch and module_disable_ro() Josh Poimboeuf
2020-04-17 14:04 ` [PATCH v2 1/9] livepatch: Disallow vmlinux.ko Josh Poimboeuf
2020-04-17 14:04 ` [PATCH v2 2/9] livepatch: Apply vmlinux-specific KLP relocations early Josh Poimboeuf
2020-04-20 17:57 ` Joe Lawrence
2020-04-20 18:25 ` Josh Poimboeuf
2020-04-20 19:01 ` Joe Lawrence
2020-04-20 19:11 ` Josh Poimboeuf
2020-04-20 19:49 ` Joe Lawrence
2020-04-20 19:51 ` Josh Poimboeuf
2020-04-23 1:10 ` Joe Lawrence [this message]
2020-04-21 11:54 ` Miroslav Benes
2020-04-17 14:04 ` [PATCH v2 3/9] livepatch: Remove .klp.arch Josh Poimboeuf
2020-04-17 14:04 ` [PATCH v2 4/9] livepatch: Prevent module-specific KLP rela sections from referencing vmlinux symbols Josh Poimboeuf
2020-04-17 14:04 ` [PATCH v2 5/9] s390: Change s390_kernel_write() return type to match memcpy() Josh Poimboeuf
2020-04-17 14:04 ` [PATCH v2 6/9] s390/module: Use s390_kernel_write() for late relocations Josh Poimboeuf
2020-04-22 12:28 ` Miroslav Benes
2020-04-24 13:43 ` Josh Poimboeuf
2020-04-22 14:40 ` Gerald Schaefer
2020-04-22 15:21 ` Gerald Schaefer
2020-04-22 19:46 ` Josh Poimboeuf
2020-04-23 12:33 ` Gerald Schaefer
2020-04-23 13:22 ` Miroslav Benes
2020-04-23 14:12 ` Josh Poimboeuf
2020-04-23 18:10 ` Josh Poimboeuf
2020-04-23 23:26 ` Josh Poimboeuf
2020-04-24 2:35 ` Joe Lawrence
2020-04-24 4:12 ` Josh Poimboeuf
2020-04-24 7:20 ` Christian Borntraeger
2020-04-24 13:37 ` Josh Poimboeuf
2020-04-30 14:38 ` Joe Lawrence
2020-04-30 16:48 ` Josh Poimboeuf
2020-04-30 17:04 ` Joe Lawrence
2020-04-23 14:21 ` Joe Lawrence
2020-04-17 14:04 ` [PATCH v2 7/9] x86/module: Use text_poke() " Josh Poimboeuf
2020-04-17 14:29 ` Peter Zijlstra
2020-04-17 14:51 ` Josh Poimboeuf
2020-04-17 14:04 ` [PATCH v2 8/9] livepatch: Remove module_disable_ro() usage Josh Poimboeuf
2020-04-17 14:04 ` [PATCH v2 9/9] module: Remove module_disable_ro() 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=20200423011003.GA20432@redhat.com \
--to=joe.lawrence@redhat.com \
--cc=jeyu@kernel.org \
--cc=jpoimboe@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=live-patching@vger.kernel.org \
--cc=peterz@infradead.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.