USB: xhci: Fail gracefully if there's no SS ep companion descriptor.
This is a work around for a bug in the SuperSpeed Endpoint Companion Descriptor parsing code. It fails in some corner cases, which means ep->ss_ep_comp may be NULL. Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
4a73143ced
commit
b7d6d99896
|
@ -496,7 +496,12 @@ int xhci_endpoint_init(struct xhci_hcd *xhci,
|
||||||
max_packet = ep->desc.wMaxPacketSize;
|
max_packet = ep->desc.wMaxPacketSize;
|
||||||
ep_ctx->ep_info2 |= MAX_PACKET(max_packet);
|
ep_ctx->ep_info2 |= MAX_PACKET(max_packet);
|
||||||
/* dig out max burst from ep companion desc */
|
/* dig out max burst from ep companion desc */
|
||||||
max_packet = ep->ss_ep_comp->desc.bMaxBurst;
|
if (!ep->ss_ep_comp) {
|
||||||
|
xhci_warn(xhci, "WARN no SS endpoint companion descriptor.\n");
|
||||||
|
max_packet = 0;
|
||||||
|
} else {
|
||||||
|
max_packet = ep->ss_ep_comp->desc.bMaxBurst;
|
||||||
|
}
|
||||||
ep_ctx->ep_info2 |= MAX_BURST(max_packet);
|
ep_ctx->ep_info2 |= MAX_BURST(max_packet);
|
||||||
break;
|
break;
|
||||||
case USB_SPEED_HIGH:
|
case USB_SPEED_HIGH:
|
||||||
|
|
Loading…
Reference in a new issue