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;