• Ian Kent's avatar
    autofs4: fix pending checks · 26e81b31
    Ian Kent authored
    There are two cases for which a dentry that has a pending mount request
    does not wait for completion.  One is via autofs4_revalidate() and the
    other via autofs4_follow_link().
    
    In revalidate, after the mount point directory is created, but before the
    mount is done, the check in try_to_fill_dentry() can can fail to send the
    dentry to the wait queue since the dentry is positive and the lookup flags
    may contain only LOOKUP_FOLLOW.  Although we don't trigger a mount for the
    LOOKUP_FOLLOW flag, if ther's one pending we might as well wait and use
    the mounted dentry for the lookup.
    
    In autofs4_follow_link() the dentry is not checked to see if it is pending
    so it may fail to call try_to_fill_dentry() and not wait for mount
    completion.
    
    A dentry that is pending must always be sent to the wait queue.
    Signed-off-by: default avatarIan Kent <raven@themaw.net>
    Reviewed-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>
    26e81b31
root.c 25.9 KB