Re: [PATCH] x86/ldt: Fix support_pte_mask filtering in map_ldt_struct()

From: Dave Hansen
Date: Thu Apr 19 2018 - 15:22:47 EST


On 04/19/2018 07:11 AM, Joerg Roedel wrote:
> On Thu, Apr 19, 2018 at 03:00:11PM +0200, Borislav Petkov wrote:
>> fb43d6cb91ef x86/mm: Do not auto-massage page protections <--- NOT OK
> Hmm, that hunk from above patch looks suspicious:
>
> - set_pgd(pgd + pgd_index(restore_jump_address), __pgd(__pa(pud) | _KERNPG_TABLE));
> + pgd_t new_pgd = __pgd(__pa(p4d) | pgprot_val(pgtable_prot));
> + set_pgd(pgd + pgd_index(restore_jump_address), new_pgd);
>
> The old code used __pa(pud) while the new one uses __pa(p4d).
>
> Boris, can you change that back to __pa(pud) and test please?

That does look like the culprit. I probably copy/pasted the p4d line
from above and missed that 'p4d' when converting it to pud.

Thanks for finding this, guys.