Re: [PATCH v3 1/1] xhci: Prevent runtime pm from autosuspending during initialization

From: Mathias Nyman
Date: Tue Mar 04 2014 - 06:41:19 EST


On 03/03/2014 08:37 PM, Greg KH wrote:
On Mon, Mar 03, 2014 at 07:30:17PM +0200, Mathias Nyman wrote:
xHCI driver has its own pci probe function that will call usb_hcd_pci_probe
to register its usb-2 bus, and then continue to manually register the
usb-3 bus. usb_hcd_pci_probe does a pm_runtime_put_noidle at the end and
might thus trigger a runtime suspend before the usb-3 bus is ready.

What is the result if that happens?

Crashes. Null pointer dereference in xhci_suspend() when touching xhci->shared_hcd before it's initialized. More info here:

http://marc.info/?l=linux-usb&m=138914518219334&w=2


Is this a regression from 3.13? Or something new for 3.14?


According to reporter its been around since 3.7

commit 596d789a211d134dc5f94d1e5957248c204ef850
USB: set hub's default autosuspend delay as 0

But nobody else than the reporter is able to trigger it.

What platform(s) are affected by this?

David, the reporter (added to cc), mentioned
"This bug happened in a platform with 1 usb3 host controller + 1 usb3 OTG controller" run by some Intel internal group

http://marc.info/?l=linux-usb&m=138915969822029&w=2

David, can you elaborate on the platform?

xhci-platform driver is not using usb_hcd_pci_probe to set up
busses and should not need to have it's usage count increased during probe.

I didn't think we had any in-kernel users of the xhci-platform driver,
has that changed and I missed a new platform being added?


Not that I'm aware of. I just wanted to point out that this issue is only a matter on pci enumerated xhci hosts.

-Mathias

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