Re: [PATCH v4 0/3] kallsyms base relative series

From: Kees Cook
Date: Mon Jan 25 2016 - 13:53:52 EST


On Mon, Jan 25, 2016 at 6:19 AM, Ard Biesheuvel
<ard.biesheuvel@xxxxxxxxxx> wrote:
> This v4 of my kallsyms base relative implementation is now a 3 piece series,
> since it caused some problems due to the way absolute symbols are handled
> by the absolute per cpu code. As it turns out, that code was probably wrong
> in the sense that it caused non-relocated symbol addresses to be emitted
> for values that are in fact relative to the address of the kernel text.
>
> Patch #1 fixes the scripts/kallsyms invocation to only pass the x86_64
> specific --absolute-percpu option if CONFIG_SMP is also set.
>
> Patch #2 reworks the absolute percpu code to only emit those percpu symbols
> as absolute, and not symbols that have been classified as 'A' (absolute) by
> the linker, since that does not mean quite the same thing.
>
> Patch #3 is the original kallsyms base relative patch, with some
> modifications:
> - folded the s/ULLONG_MAX/-1ULL? change made by Andrew
> - ensured that the kallsyms_relative_base value itself is relocated as
> required.
> - dropped all of the acks and other tags, as they have become outdated with
> the recent changes to this patch.
>
> Ard Biesheuvel (3):
> x86: kallsyms: disable absolute percpu symbols on !SMP
> kallsyms: don't overload absolute symbol type for percpu symbols
> kallsyms: add support for relative offsets in kallsyms address table

Still works for me!

Reviewed-by: Kees Cook <keescook@xxxxxxxxxxxx>
Tested-by: Kees Cook <keescook@xxxxxxxxxxxx>

-Kees

>
> init/Kconfig | 16 +++
> kernel/kallsyms.c | 38 ++++++--
> scripts/kallsyms.c | 102 +++++++++++++++++---
> scripts/link-vmlinux.sh | 6 +-
> scripts/namespace.pl | 2 +
> 5 files changed, 142 insertions(+), 22 deletions(-)
>
> --
> 2.5.0
>



--
Kees Cook
Chrome OS & Brillo Security