• Frederic Weisbecker's avatar
    kill-the-bkl/reiserfs: acquire the inode mutex safely · c72e0575
    Frederic Weisbecker authored
    While searching a pathname, an inode mutex can be acquired
    in do_lookup() which calls reiserfs_lookup() which in turn
    acquires the write lock.
    
    On the other side reiserfs_fill_super() can acquire the write_lock
    and then call reiserfs_lookup_privroot() which can acquire an
    inode mutex (the root of the mount point).
    
    So we theoretically risk an AB - BA lock inversion that could lead
    to a deadlock.
    
    As for other lock dependencies found since the bkl to mutex
    conversion, the fix is to use reiserfs_mutex_lock_safe() which
    drops the lock dependency to the write lock.
    
    [ Impact: fix a possible deadlock with reiserfs ]
    
    Cc: Jeff Mahoney <jeffm@suse.com>
    Cc: Chris Mason <chris.mason@oracle.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Alexander Beregalov <a.beregalov@gmail.com>
    Signed-off-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
    c72e0575
journal.c 123 KB