Module Name: src Committed By: sborrill Date: Wed Jan 27 20:56:45 UTC 2010
Modified Files: src/sys/dev/usb [netbsd-5]: usbdi.c Log Message: Pull up the following revisions(s) (requested by bouyer in ticket #1247): sys/dev/usb/usbdi.c: revision 1.127 Fix leak of a usbd_xfer_handle when a interrupt pipe is aborted then closed. Confirmed to fix the memory leak on close() with umodem(4) and uplcom(4). To generate a diff of this commit: cvs rdiff -u -r1.124.4.1 -r1.124.4.2 src/sys/dev/usb/usbdi.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/usb/usbdi.c diff -u src/sys/dev/usb/usbdi.c:1.124.4.1 src/sys/dev/usb/usbdi.c:1.124.4.2 --- src/sys/dev/usb/usbdi.c:1.124.4.1 Sat Dec 13 21:44:42 2008 +++ src/sys/dev/usb/usbdi.c Wed Jan 27 20:56:45 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: usbdi.c,v 1.124.4.1 2008/12/13 21:44:42 bouyer Exp $ */ +/* $NetBSD: usbdi.c,v 1.124.4.2 2010/01/27 20:56:45 sborrill Exp $ */ /* $FreeBSD: src/sys/dev/usb/usbdi.c,v 1.28 1999/11/17 22:33:49 n_hibma Exp $ */ /* @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: usbdi.c,v 1.124.4.1 2008/12/13 21:44:42 bouyer Exp $"); +__KERNEL_RCSID(0, "$NetBSD: usbdi.c,v 1.124.4.2 2010/01/27 20:56:45 sborrill Exp $"); #include "opt_compat_netbsd.h" @@ -519,6 +519,7 @@ { usbd_status err; int s; + usbd_xfer_handle intrxfer = pipe->intrxfer; #ifdef DIAGNOSTIC if (pipe == NULL) { @@ -529,6 +530,8 @@ s = splusb(); err = usbd_ar_pipe(pipe); splx(s); + if (pipe->intrxfer != intrxfer) + usbd_free_xfer(intrxfer); return (err); }