From 25c3334f0e1ea6bde84c0514bad0eb1859566dba Mon Sep 17 00:00:00 2001 From: Krishna Reddy Date: Tue, 29 May 2012 16:29:10 -0700 Subject: mm: Ensure pte and pmd stores ordering. Bug 974153 Signed-off-by: Krishna Reddy Change-Id: I294a93eca0b395c8c2639a7d6a2d29c54447ae37 Reviewed-on: http://git-master/r/105215 Tested-by: Krishna Reddy Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Jon Mayo Reviewed-by: Bo Yan Reviewed-by: Vinod Rex GVS: Gerrit_Virtual_Submit Reviewed-by: Krishna Reddy --- arch/arm/mm/pageattr.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'arch/arm/mm') diff --git a/arch/arm/mm/pageattr.c b/arch/arm/mm/pageattr.c index 5f8071110e88..b7ff7f19b541 100644 --- a/arch/arm/mm/pageattr.c +++ b/arch/arm/mm/pageattr.c @@ -331,6 +331,10 @@ static void __set_pmd_pte(pmd_t *pmd, unsigned long address, pte_t *pte) cpa_debug("__set_pmd_pte %x %x %x\n", pmd, pte, *pte); + /* enforce pte entry stores ordering to avoid pmd writes + * bypassing pte stores. + */ + dsb(); /* change init_mm */ pmd_populate_kernel(&init_mm, pmd, pte); @@ -342,7 +346,10 @@ static void __set_pmd_pte(pmd_t *pmd, unsigned long address, pte_t *pte) pgd_index(address), address); pmd_populate_kernel(NULL, pmd, pte); } - + /* enforce pmd entry stores ordering to avoid tlb flush bypassing + * pmd entry stores. + */ + dsb(); } static int -- cgit v1.2.3