Module Name:    src
Committed By:   jmcneill
Date:           Wed Jan 23 23:44:30 UTC 2013

Modified Files:
        src/sys/dev/usb: usb_mem.c usb_mem.h


To generate a diff of this commit:
cvs rdiff -u -r1.58 -r1.59 src/sys/dev/usb/usb_mem.c
cvs rdiff -u -r1.29 -r1.30 src/sys/dev/usb/usb_mem.h

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/usb_mem.c
diff -u src/sys/dev/usb/usb_mem.c:1.58 src/sys/dev/usb/usb_mem.c:1.59
--- src/sys/dev/usb/usb_mem.c:1.58	Sat Jan 19 20:49:33 2013
+++ src/sys/dev/usb/usb_mem.c	Wed Jan 23 23:44:30 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: usb_mem.c,v 1.58 2013/01/19 20:49:33 christos Exp $	*/
+/*	$NetBSD: usb_mem.c,v 1.59 2013/01/23 23:44:30 jmcneill Exp $	*/
 
 /*
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: usb_mem.c,v 1.58 2013/01/19 20:49:33 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: usb_mem.c,v 1.59 2013/01/23 23:44:30 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -178,6 +178,7 @@ usb_block_allocmem(bus_dma_tag_t tag, si
 		kmem_free(b, sizeof *b);
 		return USBD_NOMEM;
 	}
+	b->nsegs_alloc = b->nsegs;
 
 	error = bus_dmamem_alloc(tag, b->size, align, 0,
 				 b->segs, b->nsegs,
@@ -214,7 +215,7 @@ usb_block_allocmem(bus_dma_tag_t tag, si
  free1:
 	bus_dmamem_free(tag, b->segs, b->nsegs);
  free0:
-	kmem_free(b->segs, b->nsegs * sizeof(*b->segs));
+	kmem_free(b->segs, b->nsegs_alloc * sizeof(*b->segs));
 	kmem_free(b, sizeof *b);
 	return (USBD_NOMEM);
 }
@@ -233,7 +234,7 @@ usb_block_real_freemem(usb_dma_block_t *
 	bus_dmamap_destroy(b->tag, b->map);
 	bus_dmamem_unmap(b->tag, b->kaddr, b->size);
 	bus_dmamem_free(b->tag, b->segs, b->nsegs);
-	kmem_free(b->segs, b->nsegs * sizeof(*b->segs));
+	kmem_free(b->segs, b->nsegs_alloc * sizeof(*b->segs));
 	kmem_free(b, sizeof *b);
 }
 #endif

Index: src/sys/dev/usb/usb_mem.h
diff -u src/sys/dev/usb/usb_mem.h:1.29 src/sys/dev/usb/usb_mem.h:1.30
--- src/sys/dev/usb/usb_mem.h:1.29	Mon Jan  7 15:07:41 2013
+++ src/sys/dev/usb/usb_mem.h	Wed Jan 23 23:44:30 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: usb_mem.h,v 1.29 2013/01/07 15:07:41 prlw1 Exp $	*/
+/*	$NetBSD: usb_mem.h,v 1.30 2013/01/23 23:44:30 jmcneill Exp $	*/
 /*	$FreeBSD: src/sys/dev/usb/usb_mem.h,v 1.9 1999/11/17 22:33:47 n_hibma Exp $	*/
 
 /*
@@ -37,6 +37,7 @@ typedef struct usb_dma_block {
         void *kaddr;
         bus_dma_segment_t *segs;
         int nsegs;
+        int nsegs_alloc;
         size_t size;
         size_t align;
 	int flags;

Reply via email to