diff options
| author | augustss <augustss@NetBSD.org> | 2001-11-29 11:07:12 +0000 |
|---|---|---|
| committer | augustss <augustss@NetBSD.org> | 2001-11-29 11:07:12 +0000 |
| commit | c01e71bac5226ba53ae3b75f0678fdbc0815cf8a (patch) | |
| tree | 4000dd7f65ed6add65d23d6ce56d8d3ae2c0f6ff /sys/dev | |
| parent | 6da382e0f089559a8fa0898a4e7abd809d7b400f (diff) | |
Plug a memory leak in an error case.
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/usb/ulpt.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/sys/dev/usb/ulpt.c b/sys/dev/usb/ulpt.c index 9342584f67a..c7ec70f4446 100644 --- a/sys/dev/usb/ulpt.c +++ b/sys/dev/usb/ulpt.c @@ -1,4 +1,4 @@ -/* $NetBSD: ulpt.c,v 1.44 2001/11/13 06:24:55 lukem Exp $ */ +/* $NetBSD: ulpt.c,v 1.45 2001/11/29 11:07:12 augustss Exp $ */ /* $FreeBSD: src/sys/dev/usb/ulpt.c,v 1.24 1999/11/17 22:33:44 n_hibma Exp $ */ /* @@ -43,7 +43,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ulpt.c,v 1.44 2001/11/13 06:24:55 lukem Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ulpt.c,v 1.45 2001/11/29 11:07:12 augustss Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -547,8 +547,18 @@ ulptopen(dev_t dev, int flag, int mode, struct proc *p) sc->sc_in_xfer2 = usbd_alloc_xfer(sc->sc_udev); if (sc->sc_in_xfer1 == NULL || sc->sc_in_xfer2 == NULL) { error = ENOMEM; + if (sc->sc_in_xfer1 != NULL) { + usbd_free_xfer(sc->sc_in_xfer1); + sc->sc_in_xfer1 = NULL; + } + if (sc->sc_in_xfer2 != NULL) { + usbd_free_xfer(sc->sc_in_xfer2); + sc->sc_in_xfer2 = NULL; + } usbd_close_pipe(sc->sc_out_pipe); sc->sc_out_pipe = NULL; + usbd_close_pipe(sc->sc_in_pipe); + sc->sc_in_pipe = NULL; sc->sc_state = 0; goto done; } |
