summaryrefslogtreecommitdiffstats
path: root/sys/nfsserver
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2007-08-06 14:26:03 +0000
committerrwatson <rwatson@FreeBSD.org>2007-08-06 14:26:03 +0000
commit23574c86734ab5cb088584d30345e698cbbeaef2 (patch)
tree63e9e0c42ec5669b83e25b5f9cbdcbee7e1be6dc /sys/nfsserver
parent5f4b9d20fc4bf36bf86f78bb1622ee474a93dc56 (diff)
downloadFreeBSD-src-23574c86734ab5cb088584d30345e698cbbeaef2.zip
FreeBSD-src-23574c86734ab5cb088584d30345e698cbbeaef2.tar.gz
Remove the now-unused NET_{LOCK,UNLOCK,ASSERT}_GIANT() macros, which
previously conditionally acquired Giant based on debug.mpsafenet. As that has now been removed, they are no longer required. Removing them significantly simplifies error-handling in the socket layer, eliminated quite a bit of unwinding of locking in error cases. While here clean up the now unneeded opt_net.h, which previously was used for the NET_WITH_GIANT kernel option. Clean up some related gotos for consistency. Reviewed by: bz, csjp Tested by: kris Approved by: re (kensmith)
Diffstat (limited to 'sys/nfsserver')
-rw-r--r--sys/nfsserver/nfs_srvsock.c7
-rw-r--r--sys/nfsserver/nfs_srvsubs.c2
-rw-r--r--sys/nfsserver/nfs_syscalls.c17
3 files changed, 4 insertions, 22 deletions
diff --git a/sys/nfsserver/nfs_srvsock.c b/sys/nfsserver/nfs_srvsock.c
index 897e5f4..053cffc 100644
--- a/sys/nfsserver/nfs_srvsock.c
+++ b/sys/nfsserver/nfs_srvsock.c
@@ -413,12 +413,6 @@ nfsrv_rcv(struct socket *so, void *arg, int waitflag)
struct uio auio;
int flags, error;
- /*
- * XXXRW: For now, assert Giant here since the NFS server upcall
- * will perform socket operations requiring Giant in a non-mpsafe
- * kernel.
- */
- NET_ASSERT_GIANT();
NFSD_UNLOCK_ASSERT();
/* XXXRW: Unlocked read. */
@@ -761,7 +755,6 @@ nfsrv_send(struct socket *so, struct sockaddr *nam, struct mbuf *top)
struct sockaddr *sendnam;
int error, soflags, flags;
- NET_ASSERT_GIANT();
NFSD_UNLOCK_ASSERT();
soflags = so->so_proto->pr_flags;
diff --git a/sys/nfsserver/nfs_srvsubs.c b/sys/nfsserver/nfs_srvsubs.c
index 33bde8a..380df3a 100644
--- a/sys/nfsserver/nfs_srvsubs.c
+++ b/sys/nfsserver/nfs_srvsubs.c
@@ -526,7 +526,6 @@ nfsrv_modevent(module_t mod, int type, void *data)
static int registered;
int error = 0;
- NET_LOCK_GIANT();
switch (type) {
case MOD_LOAD:
mtx_init(&nfsd_mtx, "nfsd_mtx", NULL, MTX_DEF);
@@ -577,7 +576,6 @@ nfsrv_modevent(module_t mod, int type, void *data)
error = EOPNOTSUPP;
break;
}
- NET_UNLOCK_GIANT();
return error;
}
static moduledata_t nfsserver_mod = {
diff --git a/sys/nfsserver/nfs_syscalls.c b/sys/nfsserver/nfs_syscalls.c
index ff31b98..aea9cc4 100644
--- a/sys/nfsserver/nfs_syscalls.c
+++ b/sys/nfsserver/nfs_syscalls.c
@@ -134,7 +134,6 @@ nfssvc(struct thread *td, struct nfssvc_args *uap)
error = priv_check(td, PRIV_NFS_DAEMON);
if (error)
return (error);
- NET_LOCK_GIANT();
NFSD_LOCK();
while (nfssvc_sockhead_flag & SLP_INIT) {
nfssvc_sockhead_flag |= SLP_WANTINIT;
@@ -145,12 +144,12 @@ nfssvc(struct thread *td, struct nfssvc_args *uap)
if (uap->flag & NFSSVC_ADDSOCK) {
error = copyin(uap->argp, (caddr_t)&nfsdarg, sizeof(nfsdarg));
if (error)
- goto done2;
+ return (error);
if ((error = fget(td, nfsdarg.sock, &fp)) != 0)
- goto done2;
+ return (error);
if (fp->f_type != DTYPE_SOCKET) {
fdrop(fp, td);
- goto done2;
+ return (error); /* XXXRW: Should be EINVAL? */
}
/*
* Get the client address for connected sockets.
@@ -162,7 +161,7 @@ nfssvc(struct thread *td, struct nfssvc_args *uap)
nfsdarg.namelen);
if (error) {
fdrop(fp, td);
- goto done2;
+ return (error);
}
}
error = nfssvc_addsock(fp, nam, td);
@@ -174,8 +173,6 @@ nfssvc(struct thread *td, struct nfssvc_args *uap)
}
if (error == EINTR || error == ERESTART)
error = 0;
-done2:
- NET_UNLOCK_GIANT();
return (error);
}
@@ -190,8 +187,6 @@ nfssvc_addsock(struct file *fp, struct sockaddr *mynam, struct thread *td)
struct socket *so;
int error, s;
- NET_ASSERT_GIANT();
-
so = fp->f_data;
#if 0
/*
@@ -305,8 +300,6 @@ nfssvc_nfsd(struct thread *td)
int procrastinate;
u_quad_t cur_usec;
- NET_ASSERT_GIANT();
-
#ifndef nolint
cacherep = RC_DOIT;
writes_todo = 0;
@@ -590,7 +583,6 @@ nfsrv_zapsock(struct nfssvc_sock *slp)
struct nfsrv_rec *rec;
int s;
- NET_ASSERT_GIANT();
NFSD_LOCK_ASSERT();
/*
@@ -703,7 +695,6 @@ nfsrv_init(int terminating)
{
struct nfssvc_sock *slp, *nslp;
- NET_ASSERT_GIANT();
NFSD_LOCK_ASSERT();
if (nfssvc_sockhead_flag & SLP_INIT)
OpenPOWER on IntegriCloud