Date: Sat, 25 Sep 2010 00:01:56 +0000 (UTC) From: Weongyo Jeong <weongyo@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r213149 - user/weongyo/usb/sys/dev/usb Message-ID: <201009250001.o8P01u2N043666@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201009250001.o8P01u2N043666>