diff options
author | des <des@FreeBSD.org> | 2007-04-22 08:41:52 +0000 |
---|---|---|
committer | des <des@FreeBSD.org> | 2007-04-22 08:41:52 +0000 |
commit | c494d6613ee7a2abda270930371858e0da4262f7 (patch) | |
tree | 7cfbb8615530b1a7ff6a3e2249fd8f258c86d726 /sys | |
parent | fe3371c66660c323ece5a4c7acde8e7ef83856a4 (diff) | |
download | FreeBSD-src-c494d6613ee7a2abda270930371858e0da4262f7.zip FreeBSD-src-c494d6613ee7a2abda270930371858e0da4262f7.tar.gz |
Now that we're MPSAFE, tell namei() to acquire Giant if necessary.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/compat/linprocfs/linprocfs.c | 6 |
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; |