2021-01-14 19:45:53

by Josh Poimboeuf

[permalink] [raw]
Subject: [PATCH 14/21] x86/xen: Support objtool vmlinux.o validation in xen-head.S

The Xen hypercall page is filled with zeros, causing objtool to fall
through all the empty hypercall functions until it reaches a real
function, resulting in a stack state mismatch.

The build-time contents of the hypercall page don't matter, since it
gets mapped to the hypervisor. Make it more palatable to objtool by
making each hypervisor function a true empty function, with nops and a
return.

Cc: Boris Ostrovsky <[email protected]>
Cc: Juergen Gross <[email protected]>
Signed-off-by: Josh Poimboeuf <[email protected]>
---
arch/x86/xen/xen-head.S | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/x86/xen/xen-head.S b/arch/x86/xen/xen-head.S
index 2d7c8f34f56c..cb6538ae2fe0 100644
--- a/arch/x86/xen/xen-head.S
+++ b/arch/x86/xen/xen-head.S
@@ -68,8 +68,9 @@ SYM_CODE_END(asm_cpu_bringup_and_idle)
.balign PAGE_SIZE
SYM_CODE_START(hypercall_page)
.rept (PAGE_SIZE / 32)
- UNWIND_HINT_EMPTY
- .skip 32
+ UNWIND_HINT_FUNC
+ .skip 31, 0x90
+ ret
.endr

#define HYPERCALL(n) \
--
2.29.2


2021-01-15 00:36:29

by Boris Ostrovsky

[permalink] [raw]
Subject: Re: [PATCH 14/21] x86/xen: Support objtool vmlinux.o validation in xen-head.S


On 1/14/21 2:40 PM, Josh Poimboeuf wrote:
> The Xen hypercall page is filled with zeros, causing objtool to fall
> through all the empty hypercall functions until it reaches a real
> function, resulting in a stack state mismatch.
>
> The build-time contents of the hypercall page don't matter, since it
> gets mapped to the hypervisor. Make it more palatable to objtool by
> making each hypervisor function a true empty function, with nops and a
> return.
>
> Cc: Boris Ostrovsky <[email protected]>
> Cc: Juergen Gross <[email protected]>
> Signed-off-by: Josh Poimboeuf <[email protected]>


Reviewed-by: Boris Ostrovsky <[email protected]>

2021-01-15 05:52:15

by Jürgen Groß

[permalink] [raw]
Subject: Re: [PATCH 14/21] x86/xen: Support objtool vmlinux.o validation in xen-head.S

On 14.01.21 20:40, Josh Poimboeuf wrote:
> The Xen hypercall page is filled with zeros, causing objtool to fall
> through all the empty hypercall functions until it reaches a real
> function, resulting in a stack state mismatch.
>
> The build-time contents of the hypercall page don't matter, since it
> gets mapped to the hypervisor.

This sentence is technically wrong: the contents don't matter, as the
page will be rewritten by the hypervisor.


Juergen


Attachments:
OpenPGP_0xB0DE9DD628BF132F.asc (3.06 kB)
OpenPGP_signature (505.00 B)
OpenPGP digital signature
Download all attachments

2021-01-15 19:49:51

by Josh Poimboeuf

[permalink] [raw]
Subject: Re: [PATCH 14/21] x86/xen: Support objtool vmlinux.o validation in xen-head.S

On Fri, Jan 15, 2021 at 06:17:25AM +0100, Jürgen Groß wrote:
> On 14.01.21 20:40, Josh Poimboeuf wrote:
> > The Xen hypercall page is filled with zeros, causing objtool to fall
> > through all the empty hypercall functions until it reaches a real
> > function, resulting in a stack state mismatch.
> >
> > The build-time contents of the hypercall page don't matter, since it
> > gets mapped to the hypervisor.
>
> This sentence is technically wrong: the contents don't matter, as the
> page will be rewritten by the hypervisor.

Thanks, updated for v2.

--
Josh