Re: [PATCH] LDT improvements

From: Andy Lutomirski
Date: Fri Dec 08 2017 - 12:43:42 EST


On Fri, Dec 8, 2017 at 9:37 AM, Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote:
> On Fri, 8 Dec 2017, Andy Lutomirski wrote:
>> Can we take a step back here? I think there are four vaguely sane
>> ways to make the LDT work:
>>
>> 1. The way it is right now -- in vmalloc space. The only real
>> downside is that it requires exposing that part of vmalloc space in
>> the user tables, which is a bit gross.
>>
>> 2. In some fixmap-like space, which is what my patch does, albeit
>> buggily. This requires a PGD that we treat as per-mm, not per-cpu,
>> but that's not so bad.
>>
>> 3. In one of the user PGDs but above TASK_SIZE_MAX. This is
>> functionally almost identical to #2, except that there's more concern
>> about exploits that write past TASK_SIZE_MAX.
>>
>> 4. In an actual vma. I don't see the benefit of doing this at all --
>> it's just like #2 except way more error prone. Hell, you have to make
>> sure that you can't munmap or mremap it, which isn't a consideration
>> at all with the other choices.
>
> Why? You can unmap vdso or uprobe or whatever VMAs and you will simply
> die. You get what you asked for.

But if you unmap ldt and then map something else at the same VA, you're root.