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);
 }
 

Reply via email to