• Ian Kent's avatar
    [PATCH] autofs4: fix another race between mount and expire · f50b6f86
    Ian Kent authored
    Jeff Moyer has identified a race between mount and expire.
    
    What happens is that during an expire the situation can arise that a directory
    is removed and another lookup is done before the expire issues a completion
    status to the kernel module.  In this case, since the the lookup gets a new
    dentry, it doesn't know that there is an expire in progress and when it posts
    its mount request, matches the existing expire request and waits for its
    completion.  ENOENT is then returned to user space from lookup (as the dentry
    passed in is now unhashed) without having performed the mount request.
    
    The solution used here is to keep track of dentrys in this unhashed state and
    reuse them, if possible, in order to preserve the flags.  Additionally, this
    infrastructure will provide the framework for the reintroduction of caching of
    mount fails removed earlier in development.
    Signed-off-by: default avatarIan Kent <raven@themaw.net>
    Acked-by: default avatarJeff Moyer <jmoyer@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    f50b6f86
inode.c 10.3 KB