-
- Downloads
[PATCH] mm: pte_offset_map_lock loops
Convert those common loops using page_table_lock on the outside and pte_offset_map within to use just pte_offset_map_lock within instead. These all hold mmap_sem (some exclusively, some not), so at no level can a page table be whipped away from beneath them. But whereas pte_alloc loops tested with the "atomic" pmd_present, these loops are testing with pmd_none, which on i386 PAE tests both lower and upper halves. That's now unsafe, so add a cast into pmd_none to test only the vital lower half: we lose a little sensitivity to a corrupt middle directory, but not enough to worry about. It appears that i386 and UML were the only architectures vulnerable in this way, and pgd and pud no problem. Signed-off-by:Hugh Dickins <hugh@veritas.com> Signed-off-by:
Andrew Morton <akpm@osdl.org> Signed-off-by:
Linus Torvalds <torvalds@osdl.org>
Showing
- fs/proc/task_mmu.c 6 additions, 11 deletionsfs/proc/task_mmu.c
- include/asm-i386/pgtable.h 2 additions, 1 deletioninclude/asm-i386/pgtable.h
- include/asm-um/pgtable.h 1 addition, 1 deletioninclude/asm-um/pgtable.h
- mm/mempolicy.c 3 additions, 4 deletionsmm/mempolicy.c
- mm/mprotect.c 3 additions, 4 deletionsmm/mprotect.c
- mm/msync.c 6 additions, 15 deletionsmm/msync.c
- mm/swapfile.c 9 additions, 11 deletionsmm/swapfile.c
Loading
Please register or sign in to comment