• David S. Miller's avatar
    sparc64: Do not insert non-valid PTEs into the TSB hash table. · ea9b59f8
    David S. Miller authored
    [ Upstream commit 18f38132 ]
    
    The assumption was that update_mmu_cache() (and the equivalent for PMDs) would
    only be called when the PTE being installed will be accessible by the user.
    
    This is not true for code paths originating from remove_migration_pte().
    
    There are dire consequences for placing a non-valid PTE into the TSB.  The TLB
    miss frramework assumes thatwhen a TSB entry matches we can just load it into
    the TLB and return from the TLB miss trap.
    
    So if a non-valid PTE is in there, we will deadlock taking the TLB miss over
    and over, never satisfying the miss.
    
    Just exit early from update_mmu_cache() and friends in this situation.
    
    Based upon a report and patch from Christopher Alexander Tobias Schulze.
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    ea9b59f8
init_64.c 65.6 KB