Thread (8 messages) read the whole thread 8 messages, 3 authors, 2007-12-29

Re: [linux-usb-devel] [PATCH v2 3/4] USB: add Cypress c67x00 OTG controller HCD driver

From: Alan Stern <stern@rowland.harvard.edu>
Date: 2007-12-29 21:51:25

On Fri, 28 Dec 2007, Grant Likely wrote:
From: Grant Likely <redacted>

This patch adds HDC support for the Cypress c67x00 family of devices.
One minor correction:
+static void c67x00_sched_done(unsigned long __c67x00)
+{
+	struct c67x00_hcd *c67x00 = (struct c67x00_hcd *)__c67x00;
+	struct c67x00_urb_priv *urbp, *tmp;
+	struct usb_hcd *hcd = c67x00_hcd_to_hcd(c67x00);
+	struct urb *urb;
+	int status;
+	unsigned long flags;
+
+	spin_lock_irqsave(&c67x00->lock, flags);
+
+	/* Loop over the done list and give back all the urbs */
+	list_for_each_entry_safe(urbp, tmp, &c67x00->done_list, hep_node) {
+		urb = urbp->urb;
+		status = urbp->status;
+
+		c67x00_release_urb(c67x00, urb);
+
+		usb_hcd_unlink_urb_from_ep(hcd, urb);
+
+		spin_unlock_irqrestore(&c67x00->lock, flags);
+		usb_hcd_giveback_urb(hcd, urb, status);
+		spin_lock_irqsave(&c67x00->lock, flags);
The giveback routine is supposed to be called with interrupts disabled.  
Consequently you should use spin_unlock() and spin_lock() here, not the 
_irqsave/_irqrestore variants.
+	}
+	spin_unlock_irqrestore(&c67x00->lock, flags);
+}
Alan Stern
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help