From owner-svn-src-user@FreeBSD.ORG Sat Sep 25 00:01:56 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 72FF6106566B; Sat, 25 Sep 2010 00:01:56 +0000 (UTC) (envelope-from weongyo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 47F038FC14; Sat, 25 Sep 2010 00:01:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o8P01uIV043670; Sat, 25 Sep 2010 00:01:56 GMT (envelope-from weongyo@svn.freebsd.org) Received: (from weongyo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o8P01u2N043666; Sat, 25 Sep 2010 00:01:56 GMT (envelope-from weongyo@svn.freebsd.org) Message-Id: <201009250001.o8P01u2N043666@svn.freebsd.org> From: Weongyo Jeong Date: Sat, 25 Sep 2010 00:01:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r213149 - user/weongyo/usb/sys/dev/usb X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 Sep 2010 00:01:56 -0000 Author: weongyo Date: Sat Sep 25 00:01:55 2010 New Revision: 213149 URL: http://svn.freebsd.org/changeset/base/213149 Log: Records the buffer length also at struct usb_page_cahce. It'd be used to check the buffer boundary. Modified: user/weongyo/usb/sys/dev/usb/usb_busdma.c user/weongyo/usb/sys/dev/usb/usb_busdma.h user/weongyo/usb/sys/dev/usb/usb_transfer.c Modified: user/weongyo/usb/sys/dev/usb/usb_busdma.c ============================================================================== --- user/weongyo/usb/sys/dev/usb/usb_busdma.c Fri Sep 24 23:56:25 2010 (r213148) +++ user/weongyo/usb/sys/dev/usb/usb_busdma.c Sat Sep 25 00:01:55 2010 (r213149) @@ -503,6 +503,7 @@ usb_pc_alloc_mem(struct usb_page_cache * } /* setup page cache */ pc->buffer = ptr; + pc->buflen = size; pc->page_start = pg; pc->page_offset_buf = 0; pc->page_offset_end = size; @@ -536,6 +537,7 @@ usb_pc_alloc_mem(struct usb_page_cache * error: /* reset most of the page cache */ pc->buffer = NULL; + pc->buflen = 0; pc->page_start = NULL; pc->page_offset_buf = 0; pc->page_offset_end = 0; @@ -559,6 +561,7 @@ usb_pc_free_mem(struct usb_page_cache *p bus_dmamem_free(pc->tag, pc->buffer, pc->map); pc->buffer = NULL; + pc->buflen = 0; } } Modified: user/weongyo/usb/sys/dev/usb/usb_busdma.h ============================================================================== --- user/weongyo/usb/sys/dev/usb/usb_busdma.h Fri Sep 24 23:56:25 2010 (r213148) +++ user/weongyo/usb/sys/dev/usb/usb_busdma.h Sat Sep 25 00:01:55 2010 (r213149) @@ -90,6 +90,7 @@ struct usb_page_cache { #endif struct usb_dma_parent_tag *tag_parent; /* always set */ void *buffer; /* virtual buffer pointer */ + int buflen; #if USB_HAVE_BUSDMA usb_size_t page_offset_buf; usb_size_t page_offset_end; Modified: user/weongyo/usb/sys/dev/usb/usb_transfer.c ============================================================================== --- user/weongyo/usb/sys/dev/usb/usb_transfer.c Fri Sep 24 23:56:25 2010 (r213148) +++ user/weongyo/usb/sys/dev/usb/usb_transfer.c Sat Sep 25 00:01:55 2010 (r213149) @@ -284,6 +284,7 @@ usbd_transfer_setup_sub_malloc(struct us return (1); /* failure */ } pc->buffer = USB_ADD_BYTES(buf, y * size); + pc->buflen = size; pc->page_start = pg; mtx_lock(pc->tag_parent->mtx); @@ -1888,6 +1889,7 @@ usbd_xfer_set_frame_data(struct usb_xfer /* set virtual address to load and length */ xfer->frbuffers[frindex].buffer = ptr; + xfer->frbuffers[frindex].buflen = len; usbd_xfer_set_frame_len(xfer, frindex, len); } @@ -1934,6 +1936,7 @@ usbd_xfer_set_frame_offset(struct usb_xf /* set virtual address to load */ xfer->frbuffers[frindex].buffer = USB_ADD_BYTES(xfer->local_buffer, offset); + xfer->frbuffers[frindex].buflen = xfer->local_buflen - offset; } void