• Andrew Morton's avatar
    [PATCH] JBD: fix race over access to b_committed_data · 47bb09d8
    Andrew Morton authored
    From: Alex Tomas <bzzz@tmi.comex.ru>
    
    We have a race wherein the block allocator can decide that
    journal_head.b_committed_data is present and then will use it.  But kjournald
    can concurrently free it and set the pointer to NULL.  It goes oops.
    
    We introduce per-buffer_head "spinlocking" based on a bit in b_state.  To do
    this we abstract out pte_chain_lock() and reuse the implementation.
    
    The bit-based spinlocking is pretty inefficient CPU-wise (hence the warning
    in there) and we may move this to a hashed spinlock later.
    47bb09d8
balloc.c 24.7 KB