Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Sep 2010 01:39:55 +0000 (UTC)
From:      Weongyo Jeong <weongyo@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r212988 - user/weongyo/usb/sys/dev/usb
Message-ID:  <201009220139.o8M1dtQ8012750@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: weongyo
Date: Wed Sep 22 01:39:55 2010
New Revision: 212988
URL: http://svn.freebsd.org/changeset/base/212988

Log:
  Adds two assertion to check invalid usages of DMA pages.

Modified:
  user/weongyo/usb/sys/dev/usb/usb_busdma.c

Modified: user/weongyo/usb/sys/dev/usb/usb_busdma.c
==============================================================================
--- user/weongyo/usb/sys/dev/usb/usb_busdma.c	Wed Sep 22 01:20:05 2010	(r212987)
+++ user/weongyo/usb/sys/dev/usb/usb_busdma.c	Wed Sep 22 01:39:55 2010	(r212988)
@@ -86,6 +86,8 @@ usbd_get_page(struct usb_page_cache *pc,
 
 #if USB_HAVE_BUSDMA
 	if (pc->pages != NULL) {
+		USB_ASSERT(pc->npages > 0,
+		    ("wrong numbers of pages (%d)", pc->npages));
 		/* Case 1 - something has been loaded into DMA */
 		if (pc->buffer) {
 			/* Case 1a - Kernel Virtual Address */
@@ -97,6 +99,9 @@ usbd_get_page(struct usb_page_cache *pc,
 		index = 0;
 		if (pc->ismultiseg) {
 			index += (offset / USB_PAGE_SIZE);
+			USB_ASSERT(index < pc->npages,
+			    ("invalid index number (%d / %d)", index,
+			    pc->npages));
 			offset %= USB_PAGE_SIZE;
 			res->length = USB_PAGE_SIZE - offset;
 			res->physaddr = page[index].physaddr + offset;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201009220139.o8M1dtQ8012750>