mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [patch] x86, cpa: consider alias mapping changes also in the flush tlb decisions
@ 2010-02-24 21:54 Suresh Siddha
  0 siblings, 0 replies; only message in thread
From: Suresh Siddha @ 2010-02-24 21:54 UTC (permalink / raw)
  To: H. Peter Anvin, Ingo Molnar, Thomas Gleixner; +Cc: Pallipadi, Venkatesh, LKML

Page attributes like RWX may be different for the kernel mappings
and its aliases. So it is quite possible that the change page attribute of
main mapping may not change any attribute and hence no flush tlb is necessary.
But cpa() of the kernel alias mappings may change the attributes and hence
we need to consider the result of cpa_process_alias() in making a decision
for flushing the tlb.

We haven't seen a problem yet because of this issue, as all the current usages
result in an attribute change of main mapping and the alias mapping may or
maynot change. But the current code can break easily if there is any usage
of cpa() where the main mapping doesn't change the attribute but the alias
mapping can (on 64bit kernel, original cpa() using the kernel identity mapping
vs the kernel text mapping can behave differently because of this bug).

Fix it by forwarding the CPA_FLUSHTLB flag from the alias_cpa to the
original cpa.

Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
---

diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
index cf07c26..cc62a0d 100644
--- a/arch/x86/mm/pageattr.c
+++ b/arch/x86/mm/pageattr.c
@@ -757,6 +757,7 @@ static int cpa_process_alias(struct cpa_data *cpa)
 		alias_cpa.flags &= ~(CPA_PAGES_ARRAY | CPA_ARRAY);
 
 		ret = __change_page_attr_set_clr(&alias_cpa, 0);
+		cpa->flags |= (alias_cpa.flags & CPA_FLUSHTLB);
 		if (ret)
 			return ret;
 	}
@@ -780,6 +781,7 @@ static int cpa_process_alias(struct cpa_data *cpa)
 		 * return value.
 		 */
 		__change_page_attr_set_clr(&alias_cpa, 0);
+		cpa->flags |= (alias_cpa.flags & CPA_FLUSHTLB);
 	}
 #endif
 



^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2010-02-24 21:55 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-02-24 21:54 [patch] x86, cpa: consider alias mapping changes also in the flush tlb decisions Suresh Siddha

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®