• Miklos Szeredi's avatar
    [fuse] fix deadlock between fuse_put_super() and request_end(), try #2 · 6dbbcb12
    Miklos Szeredi authored
    A deadlock was possible, when the last reference to the superblock was
    held due to a background request containing a file reference.
    
    Releasing the file would release the vfsmount which in turn would
    release the superblock.  Since sbput_sem is held during the fput() and
    fuse_put_super() tries to acquire this same semaphore, a deadlock
    results.
    
    The solution is to move the fput() outside the region protected by
    sbput_sem.
    Signed-off-by: default avatarMiklos Szeredi <miklos@szeredi.hu>
    6dbbcb12
dev.c 23.9 KB