Re: [RFC][PATCH 04/16] objtool: Annotate identity_mapped()

From: Peter Zijlstra
Date: Fri Mar 13 2020 - 13:23:06 EST


On Fri, Mar 13, 2020 at 12:46:05PM -0400, Brian Gerst wrote:
> On Thu, Mar 12, 2020 at 9:53 AM Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> >
> > Normally identity_mapped is not visible to objtool, due to:
> >
> > arch/x86/kernel/Makefile:OBJECT_FILES_NON_STANDARD_relocate_kernel_$(BITS).o := y
> >
> > However, when we want to run objtool on vmlinux.o there is no hiding
> > it. Without the annotation we'll get complaints about the:
> >
> call 1f
> 1: popq %r8
> subq $(1b - relocate_kernel), %r8
>
> It looks to me that this code is simply trying to get the virtual
> address of relocate_kernel using the old 32-bit method of PIC address
> calculation. On 64-bit can be done with leaq relocate_kernel(%rip),
> %r8.

Indeed. Objtool would be happy with that. And it seems I can still kexec
a kernel too.

Thanks!