• Al Viro's avatar
    Nest rename_lock inside vfsmount_lock · 7ea600b5
    Al Viro authored
    ... lest we get livelocks between path_is_under() and d_path() and friends.
    
    The thing is, wrt fairness lglocks are more similar to rwsems than to rwlocks;
    it is possible to have thread B spin on attempt to take lock shared while thread
    A is already holding it shared, if B is on lower-numbered CPU than A and there's
    a thread C spinning on attempt to take the same lock exclusive.
    
    As the result, we need consistent ordering between vfsmount_lock (lglock) and
    rename_lock (seq_lock), even though everything that takes both is going to take
    vfsmount_lock only shared.
    Spotted-by: default avatarBrad Spengler <spender@grsecurity.net>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    7ea600b5
dcache.c 78.7 KB