git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
xhci: Fix invalid loop check in xhci_free_tt_info()
[pandora-kernel.git]
/
drivers
/
usb
/
host
/
ehci-sched.c
diff --git
a/drivers/usb/host/ehci-sched.c
b/drivers/usb/host/ehci-sched.c
index
56a3203
..
a60679c
100644
(file)
--- a/
drivers/usb/host/ehci-sched.c
+++ b/
drivers/usb/host/ehci-sched.c
@@
-1475,6
+1475,7
@@
iso_stream_schedule (
* jump until after the queue is primed.
*/
else {
* jump until after the queue is primed.
*/
else {
+ int done = 0;
start = SCHEDULE_SLOP + (now & ~0x07);
/* NOTE: assumes URB_ISO_ASAP, to limit complexity/bugs */
start = SCHEDULE_SLOP + (now & ~0x07);
/* NOTE: assumes URB_ISO_ASAP, to limit complexity/bugs */
@@
-1492,18
+1493,18
@@
iso_stream_schedule (
if (stream->highspeed) {
if (itd_slot_ok(ehci, mod, start,
stream->usecs, period))
if (stream->highspeed) {
if (itd_slot_ok(ehci, mod, start,
stream->usecs, period))
-
break
;
+
done = 1
;
} else {
if ((start % 8) >= 6)
continue;
if (sitd_slot_ok(ehci, mod, stream,
start, sched, period))
} else {
if ((start % 8) >= 6)
continue;
if (sitd_slot_ok(ehci, mod, stream,
start, sched, period))
-
break
;
+
done = 1
;
}
}
- } while (start > next);
+ } while (start > next
&& !done
);
/* no room in the schedule */
/* no room in the schedule */
- if (
start == next
) {
+ if (
!done
) {
ehci_dbg(ehci, "iso resched full %p (now %d max %d)\n",
urb, now, now + mod);
status = -ENOSPC;
ehci_dbg(ehci, "iso resched full %p (now %d max %d)\n",
urb, now, now + mod);
status = -ENOSPC;