• Al Viro's avatar
    hpfs: deadlock and race in directory lseek() · 31abdab9
    Al Viro authored
    For one thing, there's an ABBA deadlock on hpfs fs-wide lock and i_mutex
    in hpfs_dir_lseek() - there's a lot of methods that grab the former with
    the caller already holding the latter, so it must take i_mutex first.
    
    For another, locking the damn thing, carefully validating the offset,
    then dropping locks and assigning the offset is obviously racy.
    
    Moreover, we _must_ do hpfs_add_pos(), or the machinery in dnode.c
    won't modify the sucker on B-tree surgeries.
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    31abdab9
dir.c 8.6 KB