diff options
author | 2016-10-13 18:16:42 +0000 | |
---|---|---|
committer | 2016-10-13 18:16:42 +0000 | |
commit | 1bce55bfeb3ff3924d73767c012b0743c152c3cb (patch) | |
tree | 829fb2d9407cd176fe0636098985c000a68a8f38 | |
parent | A logic issue in smtpd's header parsing can cause SMTP sessions to hang. (diff) | |
download | wireguard-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.c | 6 | ||||
-rw-r--r-- | sys/arch/sparc64/dev/vdsk.c | 6 |
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); } |