• David Mosberger's avatar
    ia64: hugepage_free_pgtables() bug-fix · 4f28b187
    David Mosberger authored
    	When there are two huge page mappings, like the two in the example
    	below, first one at the end of PGDIR_SIZE, and second one starts at
    	next PGDIR_SIZE (64GB with 16K page size):
    
    	8000000ff0000000-8000001000000000 rw-s
    	8000001000000000-8000001010000000 rw-s
    
    	Unmapping the first vma would trick free_pgtable to think it
    	can remove one set of pgd indexed at 0x400, and it went ahead
    	purge the entire pmd/pte that are still in use by the second
    	mapping. Now any subsequent access to pmd/pte for the second
    	active mapping will trigger the bug.  We've seen hard kernel
    	hang on some platform, some other platform will generate MCA,
    	plus all kinds of unpleasant result.
    4f28b187
pgtable.h 17.7 KB