Re: Question about alternatives (Re: [PATCH 0/5] x86-64: Removesyscall instructions at fixed addresses)

From: Brian Gerst
Date: Tue May 31 2011 - 21:38:21 EST


On Tue, May 31, 2011 at 11:31 AM, Andrew Lutomirski <luto@xxxxxxx> wrote:
> On Tue, May 31, 2011 at 9:17 AM, Andrew Lutomirski <luto@xxxxxxx> wrote:
>> On Tue, May 31, 2011 at 9:11 AM, Ingo Molnar <mingo@xxxxxxx> wrote:
>>>
>>> * Andrew Lutomirski <luto@xxxxxxx> wrote:
>>>
>>>> > You could start with picking the more compatible alternative
>>>> > instruction initially. I don't at all mind losing half a cycle of
>>>> > performance in that case ... this code should be secure first.
>>>>
>>>> The more compatible one is mfence, which in some cases could (I
>>>> think) be a lot more than half a cycle.
>>>
>>> I'd still suggest to do the mfence change now and remove the
>>> alternatives patching for now - if it's more than half a cycle then
>>> it sure will be implemented properly, right?
>>
>> I don't know. ÂI just cut 5 ns off the thing a couple weeks ago and no
>> one beat me to it :)
>>
>> I'll take a look at how hard the patching will be.
>
> I don't think it'll be that hard to get the alternatives code to work
> on the vdso, but there's an annoyance: the alt_instr descriptor
> contains the absolute addresses of the old and new code. ÂThat means
> that if we generate a shared object with alternatives, that shared
> object will contain relocations, and I'd rather not teach the kernel
> how to relocate the vdso image.

Alternatives in the vdso won't work without special support, since it
is encapsulated as a binary blob in the kernel (so its
.altinstructions section won't get merged with the kernel's). You
will need to add code to parse the vdso's ELF headers and apply the
alternatives to the kernel's image of the vdso. It looks like the
32-bit vdso already has some code to parse and apply relocations to
the ELF headers so that could possibly be a starting point.

--
Brian Gerst
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/