Re: [PATCH, v2] x86: use the right protections for split-uppagetables

From: Ingo Molnar
Date: Fri Feb 20 2009 - 05:25:26 EST



* Ingo Molnar <mingo@xxxxxxx> wrote:

> [...] There's never any good reason to play protection games
> with higher-level pagetable entries. We dont do it to
> user-space pagetables either - we just populate them to
> _PAGE_TABLE and that's it.

btw., this means that we could probably even use _PAGE_TABLE
here (i.e. with the _PAGE_USER bit set), and rely on the PTE
clearing the user bit ... but in this case that tiny bit of
paranoia seems justified.

Btw., i also checked when this bug got introduced, and it got
introduced 5 years ago (in May 2004) in 2.6.7-rc1, via this
commit [historic-git sha1]:

fb75a3d: [PATCH] x86-64 updates

Date: Fri May 14 20:40:53 2004 -0700

[...]
- Handle NX bit for code pages correctly in change_page_attr()
[...]

- set_pte(kpte,mk_pte(split, PAGE_KERNEL));
+ set_pte(kpte,mk_pte(split, ref_prot));

( That 'set_pte(kpte,...)' sequence is not a pte update but a
_pmd_ update, it is the ex-largepage pte, i.e. the pmd. )

So it's an ancient, dormant bug in the CPA code that nobody ever
triggered, and we didnt notice when we rewrote that code either.

Ingo
--
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/