diff options
author | peter <peter@FreeBSD.org> | 1998-05-31 18:19:43 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 1998-05-31 18:19:43 +0000 |
commit | c50a18d36198ccf7c910eaa7d796f37ec0b7301d (patch) | |
tree | 86ac96e9c4cdc35928f1af90147fd91168c1d9b7 | |
parent | 66a3e6b96c8976dd313815b455b57ab36f640b0c (diff) | |
download | FreeBSD-src-c50a18d36198ccf7c910eaa7d796f37ec0b7301d.zip FreeBSD-src-c50a18d36198ccf7c910eaa7d796f37ec0b7301d.tar.gz |
Don't try and free mrep twice on some error conditions.
Obtained from: NetBSD
-rw-r--r-- | sys/nfs/nfs_common.h | 7 | ||||
-rw-r--r-- | sys/nfs/nfs_vfsops.c | 11 | ||||
-rw-r--r-- | sys/nfs/nfsm_subs.h | 7 | ||||
-rw-r--r-- | sys/nfsclient/nfs_vfsops.c | 11 | ||||
-rw-r--r-- | sys/nfsclient/nfsm_subs.h | 7 | ||||
-rw-r--r-- | sys/nfsserver/nfsm_subs.h | 7 |
6 files changed, 32 insertions, 18 deletions
diff --git a/sys/nfs/nfs_common.h b/sys/nfs/nfs_common.h index d6bdc63..efba82b 100644 --- a/sys/nfs/nfs_common.h +++ b/sys/nfs/nfs_common.h @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * @(#)nfsm_subs.h 8.2 (Berkeley) 3/30/95 - * $Id: nfsm_subs.h,v 1.17 1998/05/31 17:27:57 peter Exp $ + * $Id: nfsm_subs.h,v 1.18 1998/05/31 17:48:07 peter Exp $ */ @@ -337,7 +337,10 @@ struct mbuf *nfsm_rpchead __P((struct ucred *cr, int nmflag, int procid, else \ (void) nfs_rephead((s), nfsd, slp, error, cache, &frev, \ mrq, &mb, &bpos); \ - m_freem(mrep); \ + if (mrep != NULL) { \ + m_freem(mrep); \ + mrep = NULL; \ + } \ mreq = *mrq; \ if (error && (!(nfsd->nd_flag & ND_NFSV3) || \ error == EBADRPC)) \ diff --git a/sys/nfs/nfs_vfsops.c b/sys/nfs/nfs_vfsops.c index 83dc7645..bbfa4d1 100644 --- a/sys/nfs/nfs_vfsops.c +++ b/sys/nfs/nfs_vfsops.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * @(#)nfs_vfsops.c 8.12 (Berkeley) 5/20/95 - * $Id: nfs_vfsops.c,v 1.64 1998/05/30 16:33:57 peter Exp $ + * $Id: nfs_vfsops.c,v 1.65 1998/05/31 17:27:54 peter Exp $ */ #include <sys/param.h> @@ -278,11 +278,12 @@ nfs_statfs(mp, sbp, p) nfsm_request(vp, NFSPROC_FSSTAT, p, cred); if (v3) nfsm_postop_attr(vp, retattr); - if (!error) { - nfsm_dissect(sfp, struct nfs_statfs *, NFSX_STATFS(v3)); - } else + if (error) { + if (mrep != NULL) + m_free(mrep); goto nfsmout; - + } + nfsm_dissect(sfp, struct nfs_statfs *, NFSX_STATFS(v3)); sbp->f_type = MOUNT_NFS; sbp->f_flags = nmp->nm_flag; sbp->f_iosize = nfs_iosize(nmp); diff --git a/sys/nfs/nfsm_subs.h b/sys/nfs/nfsm_subs.h index d6bdc63..efba82b 100644 --- a/sys/nfs/nfsm_subs.h +++ b/sys/nfs/nfsm_subs.h @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * @(#)nfsm_subs.h 8.2 (Berkeley) 3/30/95 - * $Id: nfsm_subs.h,v 1.17 1998/05/31 17:27:57 peter Exp $ + * $Id: nfsm_subs.h,v 1.18 1998/05/31 17:48:07 peter Exp $ */ @@ -337,7 +337,10 @@ struct mbuf *nfsm_rpchead __P((struct ucred *cr, int nmflag, int procid, else \ (void) nfs_rephead((s), nfsd, slp, error, cache, &frev, \ mrq, &mb, &bpos); \ - m_freem(mrep); \ + if (mrep != NULL) { \ + m_freem(mrep); \ + mrep = NULL; \ + } \ mreq = *mrq; \ if (error && (!(nfsd->nd_flag & ND_NFSV3) || \ error == EBADRPC)) \ diff --git a/sys/nfsclient/nfs_vfsops.c b/sys/nfsclient/nfs_vfsops.c index 83dc7645..bbfa4d1 100644 --- a/sys/nfsclient/nfs_vfsops.c +++ b/sys/nfsclient/nfs_vfsops.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * @(#)nfs_vfsops.c 8.12 (Berkeley) 5/20/95 - * $Id: nfs_vfsops.c,v 1.64 1998/05/30 16:33:57 peter Exp $ + * $Id: nfs_vfsops.c,v 1.65 1998/05/31 17:27:54 peter Exp $ */ #include <sys/param.h> @@ -278,11 +278,12 @@ nfs_statfs(mp, sbp, p) nfsm_request(vp, NFSPROC_FSSTAT, p, cred); if (v3) nfsm_postop_attr(vp, retattr); - if (!error) { - nfsm_dissect(sfp, struct nfs_statfs *, NFSX_STATFS(v3)); - } else + if (error) { + if (mrep != NULL) + m_free(mrep); goto nfsmout; - + } + nfsm_dissect(sfp, struct nfs_statfs *, NFSX_STATFS(v3)); sbp->f_type = MOUNT_NFS; sbp->f_flags = nmp->nm_flag; sbp->f_iosize = nfs_iosize(nmp); diff --git a/sys/nfsclient/nfsm_subs.h b/sys/nfsclient/nfsm_subs.h index d6bdc63..efba82b 100644 --- a/sys/nfsclient/nfsm_subs.h +++ b/sys/nfsclient/nfsm_subs.h @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * @(#)nfsm_subs.h 8.2 (Berkeley) 3/30/95 - * $Id: nfsm_subs.h,v 1.17 1998/05/31 17:27:57 peter Exp $ + * $Id: nfsm_subs.h,v 1.18 1998/05/31 17:48:07 peter Exp $ */ @@ -337,7 +337,10 @@ struct mbuf *nfsm_rpchead __P((struct ucred *cr, int nmflag, int procid, else \ (void) nfs_rephead((s), nfsd, slp, error, cache, &frev, \ mrq, &mb, &bpos); \ - m_freem(mrep); \ + if (mrep != NULL) { \ + m_freem(mrep); \ + mrep = NULL; \ + } \ mreq = *mrq; \ if (error && (!(nfsd->nd_flag & ND_NFSV3) || \ error == EBADRPC)) \ diff --git a/sys/nfsserver/nfsm_subs.h b/sys/nfsserver/nfsm_subs.h index d6bdc63..efba82b 100644 --- a/sys/nfsserver/nfsm_subs.h +++ b/sys/nfsserver/nfsm_subs.h @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * @(#)nfsm_subs.h 8.2 (Berkeley) 3/30/95 - * $Id: nfsm_subs.h,v 1.17 1998/05/31 17:27:57 peter Exp $ + * $Id: nfsm_subs.h,v 1.18 1998/05/31 17:48:07 peter Exp $ */ @@ -337,7 +337,10 @@ struct mbuf *nfsm_rpchead __P((struct ucred *cr, int nmflag, int procid, else \ (void) nfs_rephead((s), nfsd, slp, error, cache, &frev, \ mrq, &mb, &bpos); \ - m_freem(mrep); \ + if (mrep != NULL) { \ + m_freem(mrep); \ + mrep = NULL; \ + } \ mreq = *mrq; \ if (error && (!(nfsd->nd_flag & ND_NFSV3) || \ error == EBADRPC)) \ |