[PATCH] USB: EHCI: fix conflation of buf == 0 with len == 0
authorAlan Stern <stern@rowland.harvard.edu>
Thu, 3 Nov 2005 16:44:49 +0000 (11:44 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 4 Jan 2006 21:48:29 +0000 (13:48 -0800)
commit6912354a895fcd234155273fe8838a0d83259a9b
tree6dca4969dda3fb177c62f18b12bfb6d2be4bb567
parent959eea2191e8d74b16ef019b0f4bf875c14f4547
[PATCH] USB: EHCI: fix conflation of buf == 0 with len == 0

When the ehci-hcd driver prepares a control URB, it tests for a
zero-length data stage by looking at the transfer_dma value instead of
the transfer_buffer_length.  (In fact it does this even for non-control
URBs, which is an additional aspect of the same bug.)

However, under certain circumstances it's possible for transfer_dma to
be 0 while transfer_buffer_length is non-zero.  This can happen when a
freshly allocated page (mapped to address 0 and marked Copy-On-Write,
but never written to) is used as the source buffer for an OUT transfer.
This patch (as598) fixes the problem.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/host/ehci-q.c