• Jeremy Kerr's avatar
    [POWERPC] spufs: Fix context destroy vs /spu readdir race · c443acab
    Jeremy Kerr authored
    We can currently cause an oops by repeatedly creating and destroying
    contexts, while doing getdents() calls on the "/spu" directory.
    
    This is due to the context's top-level dentry remaining hashed while
    the context is being destroyed.
    
    Fix this by unhashing the context's dentry with the
    dentry->d_inode->i_mutex held. This way, we'll hit the check for
    d_unhashed in dentry_readdir, and won't be included in the
    list of subdirs for /spu.
    
    test: spufs-testsuite:tests/01-spu_create/07-destroy-vs-readdir-race
    Signed-off-by: default avatarJeremy Kerr <jk@ozlabs.org>
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    c443acab
inode.c 17.1 KB