提交 ecf3701c 编写于 作者: T Thomas Pugliese 提交者: Greg Kroah-Hartman

usb: wusbcore: read actual_length bytes isoc in segments

Use the iso_frame_desc.actual_length field instead of length when
reading isoc in data segments from the HWA.  This fixes a case where the
isoc in read URB would never complete because it expected the HWA to
send more data than it actually did.  When this happened the URB would
be stuck in the driver preventing module unload and clean shutdown.
Signed-off-by: NThomas Pugliese <thomas.pugliese@gmail.com>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 4659a245
......@@ -2159,7 +2159,7 @@ static void __wa_populate_buf_in_urb_isoc(struct wahc *wa, struct wa_xfer *xfer,
wa->buf_in_urb->transfer_dma = xfer->urb->transfer_dma +
xfer->urb->iso_frame_desc[curr_iso_frame].offset;
wa->buf_in_urb->transfer_buffer_length =
xfer->urb->iso_frame_desc[curr_iso_frame].length;
xfer->urb->iso_frame_desc[curr_iso_frame].actual_length;
wa->buf_in_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
wa->buf_in_urb->transfer_buffer = NULL;
wa->buf_in_urb->sg = NULL;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册