emul_find(): actually, the emulation root vnode dance has to be done for

CHECK_ALT_SYMLINK() same way as for CHECK_ALT_EXISTS()
This fixes lossage reported on current-users and kern/12019 by Ross Harvey.
This commit is contained in:
jdolecek 2001-02-02 21:17:45 +00:00
parent 544679615d
commit c48d420625
1 changed files with 5 additions and 10 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: compat_util.c,v 1.19 2001/01/22 19:50:56 jdolecek Exp $ */
/* $NetBSD: compat_util.c,v 1.20 2001/02/02 21:17:45 jdolecek Exp $ */
/*-
* Copyright (c) 1994 The NetBSD Foundation, Inc.
@ -144,7 +144,10 @@ emul_find(p, sgp, prefix, path, pbuf, sflag)
*cp = '/';
break;
case CHECK_ALT_FL_EXISTS:
NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, buf, p);
case CHECK_ALT_FL_SYMLINK:
NDINIT(&nd, LOOKUP,
(sflag == CHECK_ALT_FL_SYMLINK) ? NOFOLLOW : FOLLOW,
UIO_SYSSPACE, buf, p);
if ((error = namei(&nd)) != 0)
goto bad;
@ -176,14 +179,6 @@ emul_find(p, sgp, prefix, path, pbuf, sflag)
}
break;
case CHECK_ALT_FL_SYMLINK:
NDINIT(&nd, LOOKUP, NOFOLLOW, UIO_SYSSPACE, buf, p);
if ((error = namei(&nd)) != 0)
goto bad;
break;
}
vrele(nd.ni_vp);