Skip to contentSkip to conversation

USB: musb: add missing unlock in cppi_interrupt()

PATCH Applied Dan Carpenter 3 participants 3 messages Mar 20, 2011 – Mar 22, 2011

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/4 USB: musb: add missing unlock in cppi_interrupt()

We should unlock before returning here.

---
Compile tested only. Isn't cppi->irq always true at this point?

drivers/usb/musb/cppi_dma.c +4 -1
index de55a3c..6385eeb 100644
@@ -1167,8 +1167,11 @@ irqreturn_t cppi_interrupt(int irq, void *dev_id)
 	tx = musb_readl(tibase, DAVINCI_TXCPPI_MASKED_REG);
 	rx = musb_readl(tibase, DAVINCI_RXCPPI_MASKED_REG);
 
-	if (!tx && !rx)
+	if (!tx && !rx) {
+		if (cppi->irq)
+			spin_unlock_irqrestore(&musb->lock, flags);
 		return IRQ_NONE;
+	}
 
 	DBG(4, "CPPI IRQ Tx%x Rx%x\n", tx, rx);
 
#1 lore raw

Hello.

Quoted 5 lines · Dan Carpenter

We should unlock before returning here.

---
Compile tested only. Isn't cppi->irq always true at this point?

No. It's only true for DM646x, and false for other DaVincis.

Quoted 6 lines
drivers/usb/musb/cppi_dma.c +0 -0
index de55a3c..6385eeb 100644
@@ -1167,8 +1167,11 @@ irqreturn_t cppi_interrupt(int irq, void *dev_id)
  	tx = musb_readl(tibase, DAVINCI_TXCPPI_MASKED_REG);

drivers/usb/musb/cppi_dma.c irqreturn_t cppi_interrupt(int irq, void *dev_id) · line 1176

Quoted 10 lines
drivers/usb/musb/cppi_dma.c +4 -1
  	rx = musb_readl(tibase, DAVINCI_RXCPPI_MASKED_REG);
 
-	if (!tx && !rx)
+	if (!tx && !rx) {
+		if (cppi->irq)
+			spin_unlock_irqrestore(&musb->lock, flags);
  		return IRQ_NONE;
+	}
 
  	DBG(4, "CPPI IRQ Tx%x Rx%x\n", tx, rx);

Thanks for fixing this.

WBR, Sergei