[PATCH] autofs4: fix race in unhashed dentry code
authorJeff Mahoney <jeffm@suse.com>
Thu, 12 Apr 2007 06:28:46 +0000 (23:28 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Thu, 12 Apr 2007 22:31:42 +0000 (15:31 -0700)
commitc3724b129b5a1a1789a2dc5348685a236ae02479
treed664a2d672b62c9bde71992cdd8e1b7904f5e3d0
parent6d205f120547043de663315698dcf5f0eaa31b5c
[PATCH] autofs4: fix race in unhashed dentry code

Commit f50b6f8691cae2e0064c499dd3ef3f31142987f0 introduced a race in
autofs4 between autofs_lookup_unhashed() and autofs_dentry_release().

autofs_dentry_release() ends up clearing the ->dentry and ->inode members
of autofs_info before removing it from the rehash list.  The list is
protected by the rehash lock in both functions, but since
autofs_dentry_release() starts tearing the autofs_info struct down before
removing it from the list, autofs_lookup_unhashed() can get a autofs_info
with a NULL dentry.

This patch moves the clearing of ->dentry and ->inode after the removal
from the rehash list.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Acked-by: Ian Kent <raven@themaw.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/autofs4/root.c