summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortom <tom@openbsd.org>2016-10-13 18:16:42 +0000
committertom <tom@openbsd.org>2016-10-13 18:16:42 +0000
commit1bce55bfeb3ff3924d73767c012b0743c152c3cb (patch)
tree829fb2d9407cd176fe0636098985c000a68a8f38
parentA logic issue in smtpd's header parsing can cause SMTP sessions to hang. (diff)
downloadwireguard-openbsd-1bce55bfeb3ff3924d73767c012b0743c152c3cb.tar.xz
wireguard-openbsd-1bce55bfeb3ff3924d73767c012b0743c152c3cb.zip
Fix memory leaks on error paths spotted by coypu (at) SDF (dot) ORG - thanks
ok deraadt@
-rw-r--r--sys/arch/sparc64/dev/ldc.c6
-rw-r--r--sys/arch/sparc64/dev/vdsk.c6
2 files changed, 8 insertions, 4 deletions
diff --git a/sys/arch/sparc64/dev/ldc.c b/sys/arch/sparc64/dev/ldc.c
index d7e0de58fda..8ae9f0c13c2 100644
--- a/sys/arch/sparc64/dev/ldc.c
+++ b/sys/arch/sparc64/dev/ldc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ldc.c,v 1.12 2015/03/21 18:02:58 kettenis Exp $ */
+/* $OpenBSD: ldc.c,v 1.13 2016/10/13 18:16:42 tom Exp $ */
/*
* Copyright (c) 2009 Mark Kettenis
*
@@ -510,7 +510,7 @@ ldc_queue_alloc(bus_dma_tag_t t, int nentries)
if (bus_dmamap_create(t, size, 1, size, 0,
BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW, &lq->lq_map) != 0)
- return (NULL);
+ goto error;
if (bus_dmamem_alloc(t, size, PAGE_SIZE, 0, &lq->lq_seg, 1,
&nsegs, BUS_DMA_NOWAIT) != 0)
@@ -534,6 +534,8 @@ free:
bus_dmamem_free(t, &lq->lq_seg, 1);
destroy:
bus_dmamap_destroy(t, lq->lq_map);
+error:
+ free(lq, M_DEVBUF, sizeof(struct ldc_queue));
return (NULL);
}
diff --git a/sys/arch/sparc64/dev/vdsk.c b/sys/arch/sparc64/dev/vdsk.c
index f07d5635f23..5be1a856773 100644
--- a/sys/arch/sparc64/dev/vdsk.c
+++ b/sys/arch/sparc64/dev/vdsk.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vdsk.c,v 1.46 2015/01/25 21:42:13 kettenis Exp $ */
+/* $OpenBSD: vdsk.c,v 1.47 2016/10/13 18:16:42 tom Exp $ */
/*
* Copyright (c) 2009, 2011 Mark Kettenis
*
@@ -841,7 +841,7 @@ vdsk_dring_alloc(bus_dma_tag_t t, int nentries)
if (bus_dmamap_create(t, size, 1, size, 0,
BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW, &vd->vd_map) != 0)
- return (NULL);
+ goto error;
if (bus_dmamem_alloc(t, size, PAGE_SIZE, 0, &vd->vd_seg, 1,
&nsegs, BUS_DMA_NOWAIT) != 0)
@@ -868,6 +868,8 @@ free:
bus_dmamem_free(t, &vd->vd_seg, 1);
destroy:
bus_dmamap_destroy(t, vd->vd_map);
+error:
+ free(vd, M_DEVBUF, sizeof(struct vdsk_dring));
return (NULL);
}