- Pass the ISOPEN flag to namei so filesystems will know we're about to
open them or otherwise access the data.
This commit is contained in:
parent
53c34859a7
commit
7625cbf3cc
@ -268,7 +268,7 @@ linux_uselib(struct thread *td, struct linux_uselib_args *args)
|
||||
* XXX: This code should make use of vn_open(), rather than doing
|
||||
* all this stuff itself.
|
||||
*/
|
||||
NDINIT(&ni, LOOKUP, FOLLOW|LOCKLEAF, UIO_SYSSPACE, library, td);
|
||||
NDINIT(&ni, LOOKUP, ISOPEN|FOLLOW|LOCKLEAF, UIO_SYSSPACE, library, td);
|
||||
error = namei(&ni);
|
||||
LFREEPATH(library);
|
||||
if (error)
|
||||
|
@ -171,7 +171,8 @@ coff_load_file(struct thread *td, char *name)
|
||||
unsigned long bss_size = 0;
|
||||
int i;
|
||||
|
||||
NDINIT(&nd, LOOKUP, LOCKLEAF | FOLLOW | SAVENAME, UIO_SYSSPACE, name, td);
|
||||
NDINIT(&nd, LOOKUP, ISOPEN | LOCKLEAF | FOLLOW | SAVENAME,
|
||||
UIO_SYSSPACE, name, td);
|
||||
|
||||
error = namei(&nd);
|
||||
if (error)
|
||||
|
@ -348,7 +348,7 @@ do_execve(td, args, mac_p)
|
||||
* in ni_vp amoung other things.
|
||||
*/
|
||||
ndp = &nd;
|
||||
NDINIT(ndp, LOOKUP, LOCKLEAF | FOLLOW | SAVENAME,
|
||||
NDINIT(ndp, LOOKUP, ISOPEN | LOCKLEAF | FOLLOW | SAVENAME,
|
||||
UIO_SYSSPACE, args->fname, td);
|
||||
|
||||
mtx_lock(&Giant);
|
||||
|
@ -118,7 +118,7 @@ vn_open_cred(ndp, flagp, cmode, cred, fdidx)
|
||||
fmode = *flagp;
|
||||
if (fmode & O_CREAT) {
|
||||
ndp->ni_cnd.cn_nameiop = CREATE;
|
||||
ndp->ni_cnd.cn_flags = LOCKPARENT | LOCKLEAF | MPSAFE;
|
||||
ndp->ni_cnd.cn_flags = ISOPEN | LOCKPARENT | LOCKLEAF | MPSAFE;
|
||||
if ((fmode & O_EXCL) == 0 && (fmode & O_NOFOLLOW) == 0)
|
||||
ndp->ni_cnd.cn_flags |= FOLLOW;
|
||||
bwillwrite();
|
||||
@ -178,7 +178,7 @@ vn_open_cred(ndp, flagp, cmode, cred, fdidx)
|
||||
}
|
||||
} else {
|
||||
ndp->ni_cnd.cn_nameiop = LOOKUP;
|
||||
ndp->ni_cnd.cn_flags =
|
||||
ndp->ni_cnd.cn_flags = ISOPEN |
|
||||
((fmode & O_NOFOLLOW) ? NOFOLLOW : FOLLOW) |
|
||||
LOCKSHARED | LOCKLEAF | MPSAFE;
|
||||
if ((error = namei(ndp)) != 0)
|
||||
|
@ -2025,7 +2025,7 @@ swapon(struct thread *td, struct swapon_args *uap)
|
||||
goto done;
|
||||
}
|
||||
|
||||
NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE, uap->name, td);
|
||||
NDINIT(&nd, LOOKUP, ISOPEN | FOLLOW, UIO_USERSPACE, uap->name, td);
|
||||
error = namei(&nd);
|
||||
if (error)
|
||||
goto done;
|
||||
|
Loading…
Reference in New Issue
Block a user