Module Name: src Committed By: christos Date: Tue Feb 5 00:39:59 UTC 2013
Modified Files: src/sys/dev/usb: usb_mem.c Log Message: segs is now used. To generate a diff of this commit: cvs rdiff -u -r1.59 -r1.60 src/sys/dev/usb/usb_mem.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/usb_mem.c diff -u src/sys/dev/usb/usb_mem.c:1.59 src/sys/dev/usb/usb_mem.c:1.60 --- src/sys/dev/usb/usb_mem.c:1.59 Wed Jan 23 18:44:30 2013 +++ src/sys/dev/usb/usb_mem.c Mon Feb 4 19:39:58 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: usb_mem.c,v 1.59 2013/01/23 23:44:30 jmcneill Exp $ */ +/* $NetBSD: usb_mem.c,v 1.60 2013/02/05 00:39:58 christos 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.59 2013/01/23 23:44:30 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: usb_mem.c,v 1.60 2013/02/05 00:39:58 christos Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -442,6 +442,13 @@ usb_reserve_allocm(struct usb_dma_reserv if (dma->block == NULL) return USBD_NOMEM; + dma->block->segs = kmem_alloc(dma->block->nsegs * + sizeof(*dma->block->segs), KM_SLEEP); + if (dma->block->segs == NULL) { + kmem_free(dma->block, sizeof *dma->block); + return USBD_NOMEM; + } + error = extent_alloc(rs->extent, size, PAGE_SIZE, 0, EX_NOWAIT, &start); @@ -458,7 +465,6 @@ usb_reserve_allocm(struct usb_dma_reserv dma->block->align = PAGE_SIZE; dma->block->size = size; dma->block->nsegs = 1; - /* XXX segs appears to be unused */ dma->block->segs[0] = rs->map->dm_segs[0]; dma->block->map = rs->map; dma->block->kaddr = rs->vaddr; @@ -470,11 +476,12 @@ usb_reserve_allocm(struct usb_dma_reserv void usb_reserve_freem(struct usb_dma_reserve *rs, usb_dma_t *dma) { - int error; + int error; /* XXX: why? */ error = extent_free(rs->extent, (u_long)(rs->paddr + dma->offs), dma->block->size, 0); - /* XXXPW correct that segs[0] is not used? */ + kmem_free(dma->block->segs, dma->block->nsegs * + sizeof(*dma->block->segs)); kmem_free(dma->block, sizeof *dma->block); }