Re: xhci irq event bogus return value ffffff94

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Apr 20, 2015 at 01:35:40PM -0400, Alan Stern wrote:
> On Mon, 20 Apr 2015, Joe Lawrence wrote:
> 
> > So -ESHUTDOWN = -108 (0xffffff94) provoked bad_action_ret into reporting
> > a bogus return value and stack trace above.
> 
> As far as I know, -Eanything is never a valid return code for an IRQ
> handler.  Shouldn't this always return either IRQ_NONE or IRQ_HANDLED?

Hi Alan -- I would think so, though the stack trace in the STS_FATAL
case might interesting to somebody?  (Not sure what info in such trace
is useful since it's an irq handler.)  Even then, it should probably be
replaced with a WARN_ONCE or similar instead of inadvertently through
the bogus irq return value.

How about the following one-liner?

-- Joe

-->8-- -->8-- -->8--

>From f8030d1cabbab1e7e5b0a0ba67fa4cd0a944d416 Mon Sep 17 00:00:00 2001
From: Joe Lawrence <joe.lawrence@xxxxxxxxxxx>
Date: Mon, 20 Apr 2015 15:40:47 -0400
Subject: [PATCH] xhci: gracefully handle xhci_irq dead device

If the xHCI host controller has died (ie, device removed) or suffered
other serious fatal error (STS_FATAL), then xhci_irq should handle this
condition with IRQ_HANDLED instead of -ESHUTDOWN.

Signed-off-by: Joe Lawrence <joe.lawrence@xxxxxxxxxxx>
---
 drivers/usb/host/xhci-ring.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index f5397a517c54..0402b80d2c85 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -2640,7 +2640,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd)
 		xhci_halt(xhci);
 hw_died:
 		spin_unlock(&xhci->lock);
-		return -ESHUTDOWN;
+		return IRQ_HANDLED;
 	}
 
 	/*
-- 
1.8.3.1

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux