aboutsummaryrefslogtreecommitdiff
path: root/sys/fs
diff options
context:
space:
mode:
authorMarko Zec <zec@FreeBSD.org>2009-08-24 10:09:30 +0000
committerMarko Zec <zec@FreeBSD.org>2009-08-24 10:09:30 +0000
commit0348c661d18262546ed177e4f7fd250976823944 (patch)
tree5ba9dcd2e54bc9abd1d333c3fb6c2e11842ff46f /sys/fs
parent2b73aacaf9ab339d6aaaf256f17f298dc54c423e (diff)
downloadsrc-0348c661d18262546ed177e4f7fd250976823944.tar.gz
src-0348c661d18262546ed177e4f7fd250976823944.zip
Fix NFS panics with options VIMAGE kernels by apropriately setting curvnet
context inside the RPC code. Temporarily set td's cred to mount's cred before calling socreate() via __rpc_nconf2socket(). Submitted by: rmacklem (in part) Reviewed by: rmacklem, rwatson Discussed with: dfr, bz Approved by: re (rwatson), julian (mentor) MFC after: 3 days
Notes
Notes: svn path=/head/; revision=196503
Diffstat (limited to 'sys/fs')
-rw-r--r--sys/fs/nfsclient/nfs_clvnops.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/fs/nfsclient/nfs_clvnops.c b/sys/fs/nfsclient/nfs_clvnops.c
index 219c62e8c2fe..5dc3a593458a 100644
--- a/sys/fs/nfsclient/nfs_clvnops.c
+++ b/sys/fs/nfsclient/nfs_clvnops.c
@@ -1405,8 +1405,8 @@ again:
}
mtx_unlock(&dnp->n_mtx);
- CURVNET_SET(P_TO_VNET(&proc0));
#ifdef INET
+ CURVNET_SET(CRED_TO_VNET(cnp->cn_cred));
IN_IFADDR_RLOCK();
if (!TAILQ_EMPTY(&V_in_ifaddrhead))
cverf.lval[0] = IA_SIN(TAILQ_FIRST(&V_in_ifaddrhead))->sin_addr.s_addr;
@@ -1415,9 +1415,9 @@ again:
cverf.lval[0] = create_verf;
#ifdef INET
IN_IFADDR_RUNLOCK();
+ CURVNET_RESTORE();
#endif
cverf.lval[1] = ++create_verf;
- CURVNET_RESTORE();
error = nfsrpc_create(dvp, cnp->cn_nameptr, cnp->cn_namelen,
vap, cverf, fmode, cnp->cn_cred, cnp->cn_thread, &dnfsva, &nfsva,
&nfhp, &attrflag, &dattrflag, NULL);