original_kernel/drivers/usb/host
David Brownell 77078570ab [PATCH] USB: ehci-hcd - fix page pointer allocation in itd_patch()
The itd_patch() function is responsible for allocating entries in the
buffer page pointer list of the iTD.  Particularly, a new page pointer
is needed every time when buffer data crosses a page boundary.

However, there is a bug in the allocation logic: the function does not
allocate a new entry when the current transaction is the first
transaction in the iTD (as indicated by first!=0).

The consequence is that, when the data of the first transaction begins
somewhere at the end of a page so that it actually does cross the page
boundary, no new page pointer is allocated.  This means that the data
at the end of the first transaction (beyond the page boundary) will be
accessed by the HC using the second page pointer, which is zero.
Furthermore, the first page pointer will be later overwritten by the
page pointers of the other transactions, which will garble it because
the value is or-ed into the iTD field.

All this particular check (for !first) does is cause incorrect
behaviour, so it should be entirely removed (and with it the variable
first that is not used for anything else).

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2005-06-27 14:44:00 -07:00
..
Kconfig [PATCH] USB: Add isp116x-hcd USB host controller driver 2005-06-27 14:43:42 -07:00
Makefile [PATCH] USB: Add isp116x-hcd USB host controller driver 2005-06-27 14:43:42 -07:00
ehci-dbg.c [PATCH] USB: misc ehci updates 2005-06-27 14:43:55 -07:00
ehci-hcd.c [PATCH] USB: misc ehci updates 2005-06-27 14:43:55 -07:00
ehci-hub.c [PATCH] USB: misc ehci updates 2005-06-27 14:43:55 -07:00
ehci-mem.c
ehci-q.c [PATCH] USB: misc ehci updates 2005-06-27 14:43:55 -07:00
ehci-sched.c [PATCH] USB: ehci-hcd - fix page pointer allocation in itd_patch() 2005-06-27 14:44:00 -07:00
ehci.h
hc_crisv10.c
hc_crisv10.h
isp116x-hcd.c [PATCH] USB HCDs: no longer need to register root hub 2005-06-27 14:43:49 -07:00
isp116x.h [PATCH] USB: Add isp116x-hcd USB host controller driver 2005-06-27 14:43:42 -07:00
ohci-au1xxx.c
ohci-dbg.c [PATCH] USB: move the usb hcd code to use the new class code. 2005-06-20 15:15:07 -07:00
ohci-hcd.c [PATCH] USB HCDs: no longer need to register root hub 2005-06-27 14:43:49 -07:00
ohci-hub.c
ohci-lh7a404.c
ohci-mem.c [PATCH] USB: add reboot notifier to ohci 2005-06-27 14:43:46 -07:00
ohci-omap.c [PATCH] ohci-omap, sl811, dummy: remove hub_set_power_budget 2005-06-27 14:43:49 -07:00
ohci-pci.c
ohci-ppc-soc.c
ohci-pxa27x.c
ohci-q.c
ohci-sa1111.c
ohci.h [PATCH] ohci-omap, sl811, dummy: remove hub_set_power_budget 2005-06-27 14:43:49 -07:00
sl811-hcd.c [PATCH] USB HCDs: no longer need to register root hub 2005-06-27 14:43:49 -07:00
sl811.h
sl811_cs.c
uhci-debug.c [PATCH] USB UHCI: Add root hub states 2005-06-27 14:43:43 -07:00
uhci-hcd.c [PATCH] USB UHCI: Detect invalid ports 2005-06-27 14:44:00 -07:00
uhci-hcd.h [PATCH] UHCI: Don't store device pointer in QH or TD 2005-06-27 14:43:48 -07:00
uhci-hub.c [PATCH] USB UHCI: Use root-hub IRQs while suspended 2005-06-27 14:43:44 -07:00
uhci-q.c [PATCH] UHCI: Don't store device pointer in QH or TD 2005-06-27 14:43:48 -07:00