x86/mm/cpa: Convert noop to functional fix

Commit:

a8aed3e0752b ("x86/mm/pageattr: Prevent PSE and GLOABL leftovers to confuse pmd/pte_present and pmd_huge")

introduced a valid fix but one location that didn't trigger the bug that
lead to finding those (small) problems, wasn't updated using the
right variable.

The wrong variable was also initialized for no good reason, that
may have been the source of the confusion. Remove the noop
initialization accordingly.

Commit a8aed3e0752b also erroneously removed one canon_pgprot pass meant
to clear pmd bitflags not supported in hardware by older CPUs, that
automatically gets corrected by this patch too by applying it to the right
variable in the new location.

Reported-by: Stefan Bader <stefan.bader@canonical.com>
Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
Acked-by: Borislav Petkov <bp@alien8.de>
Cc: Andy Whitcroft <apw@canonical.com>
Cc: Mel Gorman <mgorman@suse.de>
Link: http://lkml.kernel.org/r/1365600505-19314-1-git-send-email-aarcange@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>

authored by Andrea Arcangeli and committed by Ingo Molnar f76cfa3c 511ba86e

Changed files
+5 -5
arch
x86
+5 -5
arch/x86/mm/pageattr.c
··· 467 467 * We are safe now. Check whether the new pgprot is the same: 468 468 */ 469 469 old_pte = *kpte; 470 - old_prot = new_prot = req_prot = pte_pgprot(old_pte); 470 + old_prot = req_prot = pte_pgprot(old_pte); 471 471 472 472 pgprot_val(req_prot) &= ~pgprot_val(cpa->mask_clr); 473 473 pgprot_val(req_prot) |= pgprot_val(cpa->mask_set); ··· 478 478 * a non present pmd. The canon_pgprot will clear _PAGE_GLOBAL 479 479 * for the ancient hardware that doesn't support it. 480 480 */ 481 - if (pgprot_val(new_prot) & _PAGE_PRESENT) 482 - pgprot_val(new_prot) |= _PAGE_PSE | _PAGE_GLOBAL; 481 + if (pgprot_val(req_prot) & _PAGE_PRESENT) 482 + pgprot_val(req_prot) |= _PAGE_PSE | _PAGE_GLOBAL; 483 483 else 484 - pgprot_val(new_prot) &= ~(_PAGE_PSE | _PAGE_GLOBAL); 484 + pgprot_val(req_prot) &= ~(_PAGE_PSE | _PAGE_GLOBAL); 485 485 486 - new_prot = canon_pgprot(new_prot); 486 + req_prot = canon_pgprot(req_prot); 487 487 488 488 /* 489 489 * old_pte points to the large page base address. So we need