summaryrefslogtreecommitdiffstats
path: root/sys/compat/linprocfs
diff options
context:
space:
mode:
authordes <des@FreeBSD.org>2007-04-22 08:41:52 +0000
committerdes <des@FreeBSD.org>2007-04-22 08:41:52 +0000
commitc494d6613ee7a2abda270930371858e0da4262f7 (patch)
tree7cfbb8615530b1a7ff6a3e2249fd8f258c86d726 /sys/compat/linprocfs
parentfe3371c66660c323ece5a4c7acde8e7ef83856a4 (diff)
downloadFreeBSD-src-c494d6613ee7a2abda270930371858e0da4262f7.zip
FreeBSD-src-c494d6613ee7a2abda270930371858e0da4262f7.tar.gz
Now that we're MPSAFE, tell namei() to acquire Giant if necessary.
Diffstat (limited to 'sys/compat/linprocfs')
-rw-r--r--sys/compat/linprocfs/linprocfs.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/compat/linprocfs/linprocfs.c b/sys/compat/linprocfs/linprocfs.c
index b641e1e..c4fde2f 100644
--- a/sys/compat/linprocfs/linprocfs.c
+++ b/sys/compat/linprocfs/linprocfs.c
@@ -312,9 +312,11 @@ linprocfs_domtab(PFS_FILL_ARGS)
int error;
/* resolve symlinks etc. in the emulation tree prefix */
- NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, linux_emul_path, td);
+ NDINIT(&nd, LOOKUP, FOLLOW | MPSAFE, UIO_SYSSPACE, linux_emul_path, td);
flep = NULL;
- if (namei(&nd) != 0 || vn_fullpath(td, nd.ni_vp, &dlep, &flep) != 0)
+ error = namei(&nd);
+ VFS_UNLOCK_GIANT(NDHASGIANT(&nd));
+ if (error != 0 || vn_fullpath(td, nd.ni_vp, &dlep, &flep) != 0)
lep = linux_emul_path;
else
lep = dlep;
OpenPOWER on IntegriCloud