diff options
author | rwatson <rwatson@FreeBSD.org> | 2007-08-06 14:26:03 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2007-08-06 14:26:03 +0000 |
commit | 23574c86734ab5cb088584d30345e698cbbeaef2 (patch) | |
tree | 63e9e0c42ec5669b83e25b5f9cbdcbee7e1be6dc /sys/nfsserver | |
parent | 5f4b9d20fc4bf36bf86f78bb1622ee474a93dc56 (diff) | |
download | FreeBSD-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.c | 7 | ||||
-rw-r--r-- | sys/nfsserver/nfs_srvsubs.c | 2 | ||||
-rw-r--r-- | sys/nfsserver/nfs_syscalls.c | 17 |
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) |