# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#	           ChangeSet	1.541   -> 1.542  
#	drivers/usb/host/ehci-q.c	1.12    -> 1.13   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/04/22	david-b@pacbell.net	1.542
# [PATCH] Re: PATCH: 2.5.8 ehci, submit errors
# 
# Oh, and for non-x86 platforms with interesting pci
# mapping, this tweak to one new routine would be
# important in a particular error path I've yet to see ... :)
# --------------------------------------------
#
diff -Nru a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
--- a/drivers/usb/host/ehci-q.c	Mon Apr 22 14:28:10 2002
+++ b/drivers/usb/host/ehci-q.c	Mon Apr 22 14:28:10 2002
@@ -426,23 +426,25 @@
 		list_del (&qtd->qtd_list);
 		if (unmapped != 2) {
 			int	direction;
+			size_t	size;
 
 			/* for ctrl unmap twice: SETUP and DATA;
 			 * else (bulk, intr) just once: DATA
 			 */
-			if (!unmapped++ && usb_pipecontrol (urb->pipe))
+			if (!unmapped++ && usb_pipecontrol (urb->pipe)) {
 				direction = PCI_DMA_TODEVICE;
-			else {
+				size = sizeof (struct usb_ctrlrequest);
+			} else {
 				direction = usb_pipein (urb->pipe)
 					? PCI_DMA_FROMDEVICE
 					: PCI_DMA_TODEVICE;
+				size = qtd->urb->transfer_buffer_length;
 				unmapped++;
 			}
 			if (qtd->buf_dma)
 				pci_unmap_single (ehci->hcd.pdev,
 					qtd->buf_dma,
-					qtd->urb->transfer_buffer_length,
-					direction);
+					size, direction);
 		}
 		ehci_qtd_free (ehci, qtd);
 	}
