[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <5371f9a0-f221-af1f-641f-05e4d0991847@linux.intel.com>
Date: Wed, 10 Jan 2018 15:47:35 -0800
From: Tim Chen <tim.c.chen@...ux.intel.com>
To: David Woodhouse <dwmw@...zon.co.uk>,
Andi Kleen <ak@...ux.intel.com>
Cc: Paul Turner <pjt@...gle.com>, LKML <linux-kernel@...r.kernel.org>,
Linus Torvalds <torvalds@...ux-foundation.org>,
Greg Kroah-Hartman <gregkh@...ux-foundation.org>,
Dave Hansen <dave.hansen@...el.com>, tglx@...utronix.de,
Kees Cook <keescook@...gle.com>,
Rik van Riel <riel@...hat.com>,
Peter Zijlstra <peterz@...radead.org>,
Andy Lutomirski <luto@...capital.net>,
Jiri Kosina <jikos@...nel.org>, gnomes@...rguk.ukuu.org.uk,
x86@...nel.org, bp@...en8.de, rga@...zon.de
Subject: Re: [PATCH] x86/retpoline: Fill return stack buffer on vmexit
On 01/10/2018 02:51 PM, David Woodhouse wrote:
> + */
> +#define __FILL_RETURN_BUFFER(reg, sp, uniq) \
> + mov $(NUM_BRANCHES_TO_FILL/2), reg; \
> + .align 16; \
> +.Ldo_call1_ ## uniq: \
> + call .Ldo_call2_ ## uniq; \
> +.Ltrap1_ ## uniq: \
> + pause; \
> + jmp .Ltrap1_ ## uniq; \
> + .align 16; \
> +.Ldo_call2_ ## uniq: \
> + call .Ldo_loop_ ## uniq; \
> +.Ltrap2_ ## uniq: \
> + pause; \
> + jmp .Ltrap2_ ## uniq; \
> + .align 16; \
> +.Ldo_loop_ ## uniq: \
> + dec reg; \
> + jnz .Ldo_call1_ ## uniq; \
> + add $(BITS_PER_LONG/8)*NUM_BRANCHES_TO_FILL, sp;
> +
> #ifdef __ASSEMBLY__
>
> +
> + asm volatile (ALTERNATIVE("",
> + __stringify(__FILL_RETURN_BUFFER(%0, %1, _%=)),
> + X86_FEATURE_RETPOLINE)
We'll be patching in a fairly long set of instructions here. Maybe put
the ALTERNATIVE in the assembly and use a jmp skip_\@ for the ALTERNATIVE.
Thanks.
Tim
Powered by blists - more mailing lists