Adjust error case handling. If the VOP_LOOKUP() call unlocked the

parent directory node, remember that.

Addresses locking/lookup issues seen in:

http://mail-index.NetBSD.org/tech-kern/2004/06/20/0019.html
http://mail-index.netbsd.org/tech-kern/2005/01/08/0000.html
This commit is contained in:
wrstuden 2005-03-08 17:29:29 +00:00
parent a7d17de7d6
commit a758abc39e
1 changed files with 5 additions and 2 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: vfs_lookup.c,v 1.56 2005/02/26 21:34:56 perry Exp $ */
/* $NetBSD: vfs_lookup.c,v 1.57 2005/03/08 17:29:29 wrstuden Exp $ */
/*
* Copyright (c) 1982, 1986, 1989, 1993
@ -37,7 +37,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: vfs_lookup.c,v 1.56 2005/02/26 21:34:56 perry Exp $");
__KERNEL_RCSID(0, "$NetBSD: vfs_lookup.c,v 1.57 2005/03/08 17:29:29 wrstuden Exp $");
#include "opt_ktrace.h"
#include "opt_systrace.h"
@ -528,6 +528,9 @@ unionlookup:
goto unionlookup;
}
if (cnp->cn_flags & PDIRUNLOCK)
dpunlocked = 1;
if (error != EJUSTRETURN)
goto bad;
/*