* USB: fix ohci_complete_add
@ 2004-11-17 0:59 Pete Zaitcev
[not found] ` <20041116212231.GA17693@logos.cnet>
0 siblings, 1 reply; 3+ messages in thread
From: Pete Zaitcev @ 2004-11-17 0:59 UTC (permalink / raw)
To: marcelo.tosatti; +Cc: zaitcev, linux-kernel, linux-usb-devel
Hello, Marcelo:
This is a fix for a ludicrously stupid bug in my code in usb-ohci, which
only affects 2.4, fortunately. The problem should be obvious from the code:
when adding an element to the queue, an URB is lost if the queue contains
two or more elements already. The fix is to implement the queue correctly:
add to the tail and do not corrupt the list.
Fortunately for us, this situation is rare and its impact is limited.
More than two URBs have to complete in the same interrupt for this to
happen, and this typically takes several devices operating simultaneously.
When it happens, there is no memory leak and no oops, just a "lost callback"
sort of situation. So, the priority of this is entirely at your discretion,
but personally I'd like to see this in the next full release (2.4.28).
Yours,
-- Pete
--- linux-2.4.28-rc1/drivers/usb/host/usb-ohci.c 2004-04-14 17:33:16.000000000 -0700
+++ linux-2.4.28-rc1-usb/drivers/usb/host/usb-ohci.c 2004-11-16 15:15:44.669540982 -0800
@@ -143,7 +143,7 @@ static void ohci_complete_add(struct ohc
ohci->complete_head = urb;
ohci->complete_tail = urb;
} else {
- ohci->complete_head->hcpriv = urb;
+ ohci->complete_tail->hcpriv = urb;
ohci->complete_tail = urb;
}
}
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: USB: fix ohci_complete_add
[not found] ` <20041116212231.GA17693@logos.cnet>
@ 2004-11-23 7:12 ` Pete Zaitcev
0 siblings, 0 replies; 3+ messages in thread
From: Pete Zaitcev @ 2004-11-23 7:12 UTC (permalink / raw)
To: Marcelo Tosatti; +Cc: zaitcev, linux-kernel
> I've just release -rc4 which I plan to be the last -rc. :(
No problem, I'll resend and send Jes's fix too.
-- Pete
^ permalink raw reply [flat|nested] 3+ messages in thread
* USB: fix ohci_complete_add
@ 2004-11-23 7:16 Pete Zaitcev
0 siblings, 0 replies; 3+ messages in thread
From: Pete Zaitcev @ 2004-11-23 7:16 UTC (permalink / raw)
To: Marcelo Tosatti, zaitcev, linux-kernel
This is a fix for a ludicrously stupid bug in my code in usb-ohci, which
only affects 2.4, fortunately. The problem should be obvious from the code:
when adding an element to the queue, an URB is lost if the queue contains
two or more elements already. The fix is to implement the queue correctly:
add to the tail and do not corrupt the list.
Fortunately for us, this situation is rare and its impact is limited.
More than two URBs have to complete in the same interrupt for this to
happen, and this typically takes several devices operating simultaneously.
When it happens, there is no memory leak and no oops, just a "lost callback"
sort of situation. I got to know about this when a customer reported that
a when three USB-serial adapters are connected to a system, they start to
lose interrupts when traffic gets heavy.
--- linux-2.4.28-bk3-ohci/drivers/usb/host/usb-ohci.c 2004-04-14 17:33:16.000000000 -0700
+++ linux-2.4.28-rc1-usb/drivers/usb/host/usb-ohci.c 2004-11-16 15:15:44.000000000 -0800
@@ -143,7 +143,7 @@ static void ohci_complete_add(struct ohc
ohci->complete_head = urb;
ohci->complete_tail = urb;
} else {
- ohci->complete_head->hcpriv = urb;
+ ohci->complete_tail->hcpriv = urb;
ohci->complete_tail = urb;
}
}
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2004-11-23 7:17 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-11-17 0:59 USB: fix ohci_complete_add Pete Zaitcev
[not found] ` <20041116212231.GA17693@logos.cnet>
2004-11-23 7:12 ` Pete Zaitcev
2004-11-23 7:16 Pete Zaitcev
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®