aboutsummaryrefslogtreecommitdiff
path: root/sys/nfsserver
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>2001-09-27 22:40:38 +0000
committerPeter Wemm <peter@FreeBSD.org>2001-09-27 22:40:38 +0000
commit1290984b33d076a7094cde3f4ff1d016880eea42 (patch)
tree0787f81479ebda92d49c697add33a3151d9b4813 /sys/nfsserver
parent373791582dc430e020ab69c794e6e209979420fd (diff)
downloadsrc-1290984b33d076a7094cde3f4ff1d016880eea42.tar.gz
src-1290984b33d076a7094cde3f4ff1d016880eea42.zip
Make nfsm_dissect() have an obvious return value.
Notes
Notes: svn path=/head/; revision=84057
Diffstat (limited to 'sys/nfsserver')
-rw-r--r--sys/nfsserver/nfs_serv.c42
-rw-r--r--sys/nfsserver/nfs_srvsock.c8
-rw-r--r--sys/nfsserver/nfs_srvsubs.c106
3 files changed, 73 insertions, 83 deletions
diff --git a/sys/nfsserver/nfs_serv.c b/sys/nfsserver/nfs_serv.c
index 9e6a44557f94..f28d6385925d 100644
--- a/sys/nfsserver/nfs_serv.c
+++ b/sys/nfsserver/nfs_serv.c
@@ -187,7 +187,7 @@ nfsrv3_access(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
panic("nfsrv3_access: v3 proc called on a v2 connection");
fhp = &nfh.fh_generic;
nfsm_srvmtofh(fhp);
- nfsm_dissect(tl, u_int32_t *, NFSX_UNSIGNED);
+ tl = nfsm_dissect(u_int32_t *, NFSX_UNSIGNED);
error = nfsrv_fhtovp(fhp, 1, &vp, cred, slp, nam, &rdonly, TRUE);
if (error) {
nfsm_reply(NFSX_UNSIGNED);
@@ -320,14 +320,14 @@ nfsrv_setattr(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
VATTR_NULL(vap);
if (v3) {
nfsm_srvsattr(vap);
- nfsm_dissect(tl, u_int32_t *, NFSX_UNSIGNED);
+ tl = nfsm_dissect(u_int32_t *, NFSX_UNSIGNED);
gcheck = fxdr_unsigned(int, *tl);
if (gcheck) {
- nfsm_dissect(tl, u_int32_t *, 2 * NFSX_UNSIGNED);
+ tl = nfsm_dissect(u_int32_t *, 2 * NFSX_UNSIGNED);
fxdr_nfsv3time(tl, &guard);
}
} else {
- nfsm_dissect(sp, struct nfsv2_sattr *, NFSX_V2SATTR);
+ sp = nfsm_dissect(struct nfsv2_sattr *, NFSX_V2SATTR);
/*
* Nah nah nah nah na nah
* There is a bug in the Sun client that puts 0xffff in the mode
@@ -764,10 +764,10 @@ nfsrv_read(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
fhp = &nfh.fh_generic;
nfsm_srvmtofh(fhp);
if (v3) {
- nfsm_dissect(tl, u_int32_t *, 2 * NFSX_UNSIGNED);
+ tl = nfsm_dissect(u_int32_t *, 2 * NFSX_UNSIGNED);
off = fxdr_hyper(tl);
} else {
- nfsm_dissect(tl, u_int32_t *, NFSX_UNSIGNED);
+ tl = nfsm_dissect(u_int32_t *, NFSX_UNSIGNED);
off = (off_t)fxdr_unsigned(u_int32_t, *tl);
}
nfsm_srvstrsiz(reqlen, NFS_SRVMAXDATA(nfsd));
@@ -1027,12 +1027,12 @@ nfsrv_write(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
vput(vp);
vp = NULL;
if (v3) {
- nfsm_dissect(tl, u_int32_t *, 5 * NFSX_UNSIGNED);
+ tl = nfsm_dissect(u_int32_t *, 5 * NFSX_UNSIGNED);
off = fxdr_hyper(tl);
tl += 3;
stable = fxdr_unsigned(int, *tl++);
} else {
- nfsm_dissect(tl, u_int32_t *, 4 * NFSX_UNSIGNED);
+ tl = nfsm_dissect(u_int32_t *, 4 * NFSX_UNSIGNED);
off = (off_t)fxdr_unsigned(u_int32_t, *++tl);
tl += 2;
if (nfs_async)
@@ -1245,12 +1245,12 @@ nfsrv_writegather(struct nfsrv_descript **ndp, struct nfssvc_sock *slp,
*/
nfsm_srvmtofh(&nfsd->nd_fh);
if (v3) {
- nfsm_dissect(tl, u_int32_t *, 5 * NFSX_UNSIGNED);
+ tl = nfsm_dissect(u_int32_t *, 5 * NFSX_UNSIGNED);
nfsd->nd_off = fxdr_hyper(tl);
tl += 3;
nfsd->nd_stable = fxdr_unsigned(int, *tl++);
} else {
- nfsm_dissect(tl, u_int32_t *, 4 * NFSX_UNSIGNED);
+ tl = nfsm_dissect(u_int32_t *, 4 * NFSX_UNSIGNED);
nfsd->nd_off = (off_t)fxdr_unsigned(u_int32_t, *++tl);
tl += 2;
if (nfs_async)
@@ -1665,7 +1665,7 @@ nfsrv_create(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
VATTR_NULL(vap);
if (v3) {
- nfsm_dissect(tl, u_int32_t *, NFSX_UNSIGNED);
+ tl = nfsm_dissect(u_int32_t *, NFSX_UNSIGNED);
how = fxdr_unsigned(int, *tl);
switch (how) {
case NFSV3CREATE_GUARDED:
@@ -1678,7 +1678,7 @@ nfsrv_create(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
nfsm_srvsattr(vap);
break;
case NFSV3CREATE_EXCLUSIVE:
- nfsm_dissect(cp, caddr_t, NFSX_V3CREATEVERF);
+ cp = nfsm_dissect(caddr_t, NFSX_V3CREATEVERF);
bcopy(cp, cverf, NFSX_V3CREATEVERF);
exclusive_flag = 1;
if (nd.ni_vp == NULL)
@@ -1687,7 +1687,7 @@ nfsrv_create(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
};
vap->va_type = VREG;
} else {
- nfsm_dissect(sp, struct nfsv2_sattr *, NFSX_V2SATTR);
+ sp = nfsm_dissect(struct nfsv2_sattr *, NFSX_V2SATTR);
vap->va_type = IFTOVT(fxdr_unsigned(u_int32_t, sp->sa_mode));
if (vap->va_type == VNON)
vap->va_type = VREG;
@@ -1922,7 +1922,7 @@ nfsrv_mknod(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
error = 0;
goto nfsmout;
}
- nfsm_dissect(tl, u_int32_t *, NFSX_UNSIGNED);
+ tl = nfsm_dissect(u_int32_t *, NFSX_UNSIGNED);
vtyp = nfsv3tov_type(*tl);
if (vtyp != VCHR && vtyp != VBLK && vtyp != VSOCK && vtyp != VFIFO) {
error = NFSERR_BADTYPE;
@@ -1931,7 +1931,7 @@ nfsrv_mknod(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
VATTR_NULL(vap);
nfsm_srvsattr(vap);
if (vtyp == VCHR || vtyp == VBLK) {
- nfsm_dissect(tl, u_int32_t *, 2 * NFSX_UNSIGNED);
+ tl = nfsm_dissect(u_int32_t *, 2 * NFSX_UNSIGNED);
major = fxdr_unsigned(u_int32_t, *tl++);
minor = fxdr_unsigned(u_int32_t, *tl);
vap->va_rdev = makeudev(major, minor);
@@ -2570,7 +2570,7 @@ nfsrv_symlink(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
io.uio_td = (struct thread *)0;
nfsm_mtouio(&io, len2);
if (!v3) {
- nfsm_dissect(sp, struct nfsv2_sattr *, NFSX_V2SATTR);
+ sp = nfsm_dissect(struct nfsv2_sattr *, NFSX_V2SATTR);
vap->va_mode = fxdr_unsigned(u_int16_t, sp->sa_mode);
}
*(pathcp + len2) = '\0';
@@ -2746,7 +2746,7 @@ nfsrv_mkdir(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
if (v3) {
nfsm_srvsattr(vap);
} else {
- nfsm_dissect(tl, u_int32_t *, NFSX_UNSIGNED);
+ tl = nfsm_dissect(u_int32_t *, NFSX_UNSIGNED);
vap->va_mode = nfstov_mode(*tl++);
}
@@ -3003,13 +3003,13 @@ nfsrv_readdir(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
fhp = &nfh.fh_generic;
nfsm_srvmtofh(fhp);
if (v3) {
- nfsm_dissect(tl, u_int32_t *, 5 * NFSX_UNSIGNED);
+ tl = nfsm_dissect(u_int32_t *, 5 * NFSX_UNSIGNED);
toff = fxdr_hyper(tl);
tl += 2;
verf = fxdr_hyper(tl);
tl += 2;
} else {
- nfsm_dissect(tl, u_int32_t *, 2 * NFSX_UNSIGNED);
+ tl = nfsm_dissect(u_int32_t *, 2 * NFSX_UNSIGNED);
toff = fxdr_unsigned(u_quad_t, *tl++);
verf = 0; /* shut up gcc */
}
@@ -3295,7 +3295,7 @@ nfsrv_readdirplus(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
panic("nfsrv_readdirplus: v3 proc called on a v2 connection");
fhp = &nfh.fh_generic;
nfsm_srvmtofh(fhp);
- nfsm_dissect(tl, u_int32_t *, 6 * NFSX_UNSIGNED);
+ tl = nfsm_dissect(u_int32_t *, 6 * NFSX_UNSIGNED);
toff = fxdr_hyper(tl);
tl += 2;
verf = fxdr_hyper(tl);
@@ -3630,7 +3630,7 @@ nfsrv_commit(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
(void) vn_start_write(vp, &mp, V_WAIT);
vput(vp);
vp = NULL;
- nfsm_dissect(tl, u_int32_t *, 3 * NFSX_UNSIGNED);
+ tl = nfsm_dissect(u_int32_t *, 3 * NFSX_UNSIGNED);
/*
* XXX At this time VOP_FSYNC() does not accept offset and byte
diff --git a/sys/nfsserver/nfs_srvsock.c b/sys/nfsserver/nfs_srvsock.c
index c93d4312d323..cb2276d36785 100644
--- a/sys/nfsserver/nfs_srvsock.c
+++ b/sys/nfsserver/nfs_srvsock.c
@@ -294,14 +294,14 @@ nfs_getreq(struct nfsrv_descript *nd, struct nfsd *nfsd, int has_header)
md = nd->nd_md;
dpos = nd->nd_dpos;
if (has_header) {
- nfsm_dissect(tl, u_int32_t *, 10 * NFSX_UNSIGNED);
+ tl = nfsm_dissect(u_int32_t *, 10 * NFSX_UNSIGNED);
nd->nd_retxid = fxdr_unsigned(u_int32_t, *tl++);
if (*tl++ != rpc_call) {
m_freem(mrep);
return (EBADRPC);
}
} else
- nfsm_dissect(tl, u_int32_t *, 8 * NFSX_UNSIGNED);
+ tl = nfsm_dissect(u_int32_t *, 8 * NFSX_UNSIGNED);
nd->nd_repstat = 0;
nd->nd_flag = 0;
if (*tl++ != rpc_vers) {
@@ -357,7 +357,7 @@ nfs_getreq(struct nfsrv_descript *nd, struct nfsd *nfsd, int has_header)
return (EBADRPC);
}
nfsm_adv(nfsm_rndup(len));
- nfsm_dissect(tl, u_int32_t *, 3 * NFSX_UNSIGNED);
+ tl = nfsm_dissect(u_int32_t *, 3 * NFSX_UNSIGNED);
bzero((caddr_t)&nd->nd_cr, sizeof (struct ucred));
nd->nd_cr.cr_ref = 1;
nd->nd_cr.cr_uid = fxdr_unsigned(uid_t, *tl++);
@@ -367,7 +367,7 @@ nfs_getreq(struct nfsrv_descript *nd, struct nfsd *nfsd, int has_header)
m_freem(mrep);
return (EBADRPC);
}
- nfsm_dissect(tl, u_int32_t *, (len + 2) * NFSX_UNSIGNED);
+ tl = nfsm_dissect(u_int32_t *, (len + 2) * NFSX_UNSIGNED);
for (i = 1; i <= len; i++)
if (i < NGROUPS)
nd->nd_cr.cr_groups[i] = fxdr_unsigned(gid_t, *tl++);
diff --git a/sys/nfsserver/nfs_srvsubs.c b/sys/nfsserver/nfs_srvsubs.c
index 672ec12badb1..c47de7deca12 100644
--- a/sys/nfsserver/nfs_srvsubs.c
+++ b/sys/nfsserver/nfs_srvsubs.c
@@ -1232,11 +1232,10 @@ int
nfsm_srvstrsiz_xx(int *s, int m,
u_int32_t **tl, struct mbuf **md, caddr_t *dpos)
{
- int ret;
- ret = nfsm_dissect_xx((void **)tl, NFSX_UNSIGNED, md, dpos);
- if (ret)
- return ret;
+ *tl = nfsm_dissect_xx(NFSX_UNSIGNED, md, dpos);
+ if (*tl == NULL)
+ return EBADRPC;
*s = fxdr_unsigned(int32_t, **tl);
if (*s > m || *s <= 0)
return EBADRPC;
@@ -1247,11 +1246,10 @@ int
nfsm_srvnamesiz_xx(int *s,
u_int32_t **tl, struct mbuf **md, caddr_t *dpos)
{
- int ret;
- ret = nfsm_dissect_xx((void **)tl, NFSX_UNSIGNED, md, dpos);
- if (ret)
- return ret;
+ *tl = nfsm_dissect_xx(NFSX_UNSIGNED, md, dpos);
+ if (*tl == NULL)
+ return EBADRPC;
*s = fxdr_unsigned(int32_t, **tl);
if (*s > NFS_MAXNAMLEN)
return NFSERR_NAMETOL;
@@ -1284,13 +1282,12 @@ int
nfsm_srvmtofh_xx(fhandle_t *f, struct nfsrv_descript *nfsd,
u_int32_t **tl, struct mbuf **md, caddr_t *dpos)
{
- int error;
int fhlen;
if (nfsd->nd_flag & ND_NFSV3) {
- error = nfsm_dissect_xx((void **)tl, NFSX_UNSIGNED, md, dpos);
- if (error)
- return error;
+ *tl = nfsm_dissect_xx(NFSX_UNSIGNED, md, dpos);
+ if (*tl == NULL)
+ return EBADRPC;
fhlen = fxdr_unsigned(int, **tl);
if (fhlen != 0 && fhlen != NFSX_V3FH)
return EBADRPC;
@@ -1298,9 +1295,9 @@ nfsm_srvmtofh_xx(fhandle_t *f, struct nfsrv_descript *nfsd,
fhlen = NFSX_V2FH;
}
if (fhlen != 0) {
- error = nfsm_dissect_xx((void **)tl, fhlen, md, dpos);
- if (error)
- return error;
+ *tl = nfsm_dissect_xx(fhlen, md, dpos);
+ if (*tl == NULL)
+ return EBADRPC;
bcopy((caddr_t)*tl, (caddr_t)(f), fhlen);
} else {
bzero((caddr_t)(f), NFSX_V3FH);
@@ -1312,69 +1309,65 @@ int
nfsm_srvsattr_xx(struct vattr *a,
u_int32_t **tl, struct mbuf **md, caddr_t *dpos)
{
- int error = 0;
- error = nfsm_dissect_xx((void **)tl, NFSX_UNSIGNED, md, dpos);
- if (error)
- goto bugout;
+ *tl = nfsm_dissect_xx(NFSX_UNSIGNED, md, dpos);
+ if (*tl == NULL)
+ return EBADRPC;
if (**tl == nfs_true) {
- error = nfsm_dissect_xx((void **)tl, NFSX_UNSIGNED, md, dpos);
- if (error)
- goto bugout;
+ *tl = nfsm_dissect_xx(NFSX_UNSIGNED, md, dpos);
+ if (*tl == NULL)
+ return EBADRPC;
(a)->va_mode = nfstov_mode(**tl);
}
- error = nfsm_dissect_xx((void **)tl, NFSX_UNSIGNED, md, dpos);
- if (error)
- goto bugout;
+ *tl = nfsm_dissect_xx(NFSX_UNSIGNED, md, dpos);
+ if (*tl == NULL)
+ return EBADRPC;
if (**tl == nfs_true) {
- error = nfsm_dissect_xx((void **)tl, NFSX_UNSIGNED, md, dpos);
- if (error)
- goto bugout;
+ *tl = nfsm_dissect_xx(NFSX_UNSIGNED, md, dpos);
+ if (*tl == NULL)
+ return EBADRPC;
(a)->va_uid = fxdr_unsigned(uid_t, **tl);
}
- error = nfsm_dissect_xx((void **)tl, NFSX_UNSIGNED, md, dpos);
- if (error)
- goto bugout;
+ *tl = nfsm_dissect_xx(NFSX_UNSIGNED, md, dpos);
+ if (*tl == NULL)
+ return EBADRPC;
if (**tl == nfs_true) {
- error = nfsm_dissect_xx((void **)tl, NFSX_UNSIGNED, md, dpos);
- if (error)
- goto bugout;
+ *tl = nfsm_dissect_xx(NFSX_UNSIGNED, md, dpos);
+ if (*tl == NULL)
+ return EBADRPC;
(a)->va_gid = fxdr_unsigned(gid_t, **tl);
}
- error = nfsm_dissect_xx((void **)tl, NFSX_UNSIGNED, md, dpos);
- if (error)
- goto bugout;
+ *tl = nfsm_dissect_xx(NFSX_UNSIGNED, md, dpos);
+ if (*tl == NULL)
+ return EBADRPC;
if (**tl == nfs_true) {
- error = nfsm_dissect_xx((void **)tl, 2 * NFSX_UNSIGNED,
- md, dpos);
- if (error)
- goto bugout;
+ *tl = nfsm_dissect_xx(2 * NFSX_UNSIGNED, md, dpos);
+ if (*tl == NULL)
+ return EBADRPC;
(a)->va_size = fxdr_hyper(*tl);
}
- error = nfsm_dissect_xx((void **)tl, NFSX_UNSIGNED, md, dpos);
- if (error)
- goto bugout;
+ *tl = nfsm_dissect_xx(NFSX_UNSIGNED, md, dpos);
+ if (*tl == NULL)
+ return EBADRPC;
switch (fxdr_unsigned(int, **tl)) {
case NFSV3SATTRTIME_TOCLIENT:
- error = nfsm_dissect_xx((void **)tl, 2 * NFSX_UNSIGNED,
- md, dpos);
- if (error)
- goto bugout;
+ *tl = nfsm_dissect_xx(2 * NFSX_UNSIGNED, md, dpos);
+ if (*tl == NULL)
+ return EBADRPC;
fxdr_nfsv3time(*tl, &(a)->va_atime);
break;
case NFSV3SATTRTIME_TOSERVER:
getnanotime(&(a)->va_atime);
break;
}
- error = nfsm_dissect_xx((void **)tl, NFSX_UNSIGNED, md, dpos);
- if (error)
- goto bugout;
+ *tl = nfsm_dissect_xx(NFSX_UNSIGNED, md, dpos);
+ if (*tl == NULL)
+ return EBADRPC;
switch (fxdr_unsigned(int, **tl)) {
case NFSV3SATTRTIME_TOCLIENT:
- error = nfsm_dissect_xx((void **)tl, 2 * NFSX_UNSIGNED,
- md, dpos);
- if (error)
- goto bugout;
+ *tl = nfsm_dissect_xx(2 * NFSX_UNSIGNED, md, dpos);
+ if (*tl == NULL)
+ return EBADRPC;
fxdr_nfsv3time(*tl, &(a)->va_mtime);
break;
case NFSV3SATTRTIME_TOSERVER:
@@ -1382,9 +1375,6 @@ nfsm_srvsattr_xx(struct vattr *a,
break;
}
return 0;
-
-bugout:
- return error;
}
void