From: Pete Zaitcev <zaitcev@redhat.com>
To: linux-usb-devel@lists.sourceforge.net, fisaksen@bewan.com
Cc: linux-kernel@vger.kernel.org, Pete Zaitcev <zaitcev@redhat.com>,
Arjan Van de Ven <arjanv@redhat.com>
Subject: Re: PATCH: usb-uhci: interrupt out with urb->interval 0 [linux-usb-devel]
Date: Tue, 29 Apr 2003 15:58:42 -0400 [thread overview]
Message-ID: <20030429155842.A9215@devserv.devel.redhat.com> (raw)
In-Reply-To: <20030416160035.GA13488@gtf.org>; from jgarzik@pobox.com on Wed, Apr 16, 2003 at 12:00:36PM -0400
> From: Frode Isaksen <fisaksen@bewan.com>
> Date: Wed, 16 Apr 2003 17:44:55 +0200
> A recent change (2.4.21) in the usb-uhci driver calls
> "uhci_clean_iso_step2" after the completion of one-shot (urb->interval
> 0) interrupt out transfers. This call clears the list of descriptors.
> However, it crashes when trying to get the next desciptor in the "for"
> loop in the "process_interrupt" function,
> --- drivers/usb/usb-uhci.c.orig 2003-04-16 15:39:04.000000000 +0200
> @@ -2628,6 +2628,7 @@
> // correct toggle after unlink
> usb_dotoggle (urb->dev, usb_pipeendpoint
> (urb->pipe), usb_pipeout (urb->pipe));
> clr_td_ioc(desc); // inactivate TD
> + break;
> }
Pretty obvious, but I'd rather see something like the attached
patch instead. The original code was obviously a case of a rash
copy-paste, complete with an unused "int i".
Is there a more interesting/popular/widespread device than
Lego Tower which uses these oneshots?
-- Pete
diff -urN -X dontdiff linux-2.4.21-rc1/drivers/usb/host/usb-uhci.c linux-2.4.21-rc1-nip/drivers/usb/host/usb-uhci.c
--- linux-2.4.21-rc1/drivers/usb/host/usb-uhci.c 2003-04-24 10:52:56.000000000 -0700
+++ linux-2.4.21-rc1-nip/drivers/usb/host/usb-uhci.c 2003-04-29 12:43:28.000000000 -0700
@@ -2430,9 +2430,9 @@
_static int process_interrupt (uhci_t *s, struct urb *urb)
{
- int i, ret = -EINPROGRESS;
+ int ret = -EINPROGRESS;
urb_priv_t *urb_priv = urb->hcpriv;
- struct list_head *p = urb_priv->desc_list.next;
+ struct list_head *p;
uhci_desc_t *desc = list_entry (urb_priv->desc_list.prev, uhci_desc_t, desc_list);
int actual_length;
@@ -2440,8 +2440,8 @@
//dbg("urb contains interrupt request");
- for (i = 0; p != &urb_priv->desc_list; p = p->next, i++) // Maybe we allow more than one TD later ;-)
- {
+ // Maybe we allow more than one TD later ;-)
+ while ((p = urb_priv->desc_list.next) != &urb_priv->desc_list) {
desc = list_entry (p, uhci_desc_t, desc_list);
if (is_td_active(desc)) {
next parent reply other threads:[~2003-04-29 19:48 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20030416160035.GA13488@gtf.org>
2003-04-29 19:58 ` Pete Zaitcev [this message]
2003-04-30 7:31 ` PATCH: usb-uhci: interrupt out with urb->interval 0 [linux-usb-devel] Frode Isaksen
2003-04-30 12:38 ` Frode Isaksen
2003-04-30 22:00 ` Pete Zaitcev
2003-05-21 8:43 ` Frode Isaksen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20030429155842.A9215@devserv.devel.redhat.com \
--to=zaitcev@redhat.com \
--cc=arjanv@redhat.com \
--cc=fisaksen@bewan.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb-devel@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox