Re: [PATCH 1/2] x86: consider effective protection attributes in W+X check

From: Thomas Gleixner
Date: Thu Dec 14 2017 - 09:13:18 EST


On Thu, 14 Dec 2017, Juergen Gross wrote:
> On 12/12/17 11:31, Jan Beulich wrote:
> > for (i = 0; i < PTRS_PER_PMD; i++) {
> > st->current_address = normalize_addr(P + i * PMD_LEVEL_MULT);
> > if (!pmd_none(*start)) {
> > + prot = pmd_flags(*start);
> > + eff = effective_prot(eff_in, prot);
> > if (pmd_large(*start) || !pmd_present(*start)) {
> > - prot = pmd_flags(*start);
> > - note_page(m, st, __pgprot(prot), 4);
> > + note_page(m, st, __pgprot(prot), eff, 4);
> > } else if (!kasan_page_table(m, st, pmd_start)) {
> > - walk_pte_level(m, st, *start,
> > + walk_pte_level(m, st, *start, eff,
> > P + i * PMD_LEVEL_MULT);
> > }
>
> You can drop the braces for both cases. Applies to similar
> constructs below, too.

No. See: https://marc.info/?l=linux-kernel&m=148467980905537

This is the same issue:

if (foo)
bla();
else
blurb(somestuff, morestuff, evenmorestuff,
crap);
vs.

if (foo) {
bla();
} else {
blurb(somestuff, morestuff, evenmorestuff,
crap);
}

Thanks,

tglx