Skip to content

Commit 52f48d9

Browse files
Toshihiro KobayashiRussell King
authored andcommitted
[ARM PATCH] 1911/1: fix of odd PMD handling in do_translation_fault()
Patch from Toshihiro Kobayashi do_translation_fault() in arch/arm/mm/fault.c will never resolve odd PMD. This patch fixes that problem.
1 parent 1261c63 commit 52f48d9

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

arch/arm/mm/fault.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ do_translation_fault(unsigned long addr, unsigned int fsr,
348348
if (pmd_none(*pmd_k))
349349
goto bad_area;
350350

351-
set_pmd(pmd, *pmd_k);
351+
copy_pmd(pmd, pmd_k);
352352
return 0;
353353

354354
bad_area:

include/asm-arm/pgtable.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,13 @@ PTE_BIT_FUNC(mkyoung, |= L_PTE_YOUNG);
312312
flush_pmd_entry(pmdp); \
313313
} while (0)
314314

315+
#define copy_pmd(pmdpd,pmdps) \
316+
do { \
317+
pmdpd[0] = pmdps[0]; \
318+
pmdpd[1] = pmdps[1]; \
319+
flush_pmd_entry(pmdpd); \
320+
} while (0)
321+
315322
#define pmd_clear(pmdp) \
316323
do { \
317324
pmdp[0] = __pmd(0); \

0 commit comments

Comments
 (0)