summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2005-04-27 09:05:19 +0000
committerjeff <jeff@FreeBSD.org>2005-04-27 09:05:19 +0000
commitf869be5c723f74ca4c5c0d99a6ba4fcb9244126a (patch)
tree136593dab7ab3c0fb624d4feafbdd3bdb5f1ec90
parenta6baba06d1cf1f5e56ba23805d837db4b42c35da (diff)
downloadFreeBSD-src-f869be5c723f74ca4c5c0d99a6ba4fcb9244126a.zip
FreeBSD-src-f869be5c723f74ca4c5c0d99a6ba4fcb9244126a.tar.gz
- Pass the ISOPEN flag to namei so filesystems will know we're about to
open them or otherwise access the data.
-rw-r--r--sys/compat/linux/linux_misc.c2
-rw-r--r--sys/i386/ibcs2/imgact_coff.c3
-rw-r--r--sys/kern/kern_exec.c2
-rw-r--r--sys/kern/vfs_vnops.c4
-rw-r--r--sys/vm/swap_pager.c2
5 files changed, 7 insertions, 6 deletions
diff --git a/sys/compat/linux/linux_misc.c b/sys/compat/linux/linux_misc.c
index 85cd13b..4c6b53f 100644
--- a/sys/compat/linux/linux_misc.c
+++ b/sys/compat/linux/linux_misc.c
@@ -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)
diff --git a/sys/i386/ibcs2/imgact_coff.c b/sys/i386/ibcs2/imgact_coff.c
index b6c6cae..a7ab607 100644
--- a/sys/i386/ibcs2/imgact_coff.c
+++ b/sys/i386/ibcs2/imgact_coff.c
@@ -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)
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c
index 9783615..52e1c68 100644
--- a/sys/kern/kern_exec.c
+++ b/sys/kern/kern_exec.c
@@ -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);
diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c
index b51880c..084f310 100644
--- a/sys/kern/vfs_vnops.c
+++ b/sys/kern/vfs_vnops.c
@@ -118,7 +118,7 @@ restart:
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 @@ restart:
}
} 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)
diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c
index eca68b6..f4d61fb 100644
--- a/sys/vm/swap_pager.c
+++ b/sys/vm/swap_pager.c
@@ -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;
OpenPOWER on IntegriCloud