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;