Hi,
I looked at xhci_configure_endpoint() in the stable tree.
There is a serious bug:
/* Wait for the configure endpoint command to complete */
timeleft = wait_for_completion_interruptible_timeout(
^ -ERESTARTSYS in the signal case
cmd_completion,
XHCI_CMD_DEFAULT_TIMEOUT);
if (timeleft <= 0) {
xhci_warn(xhci, "%s while waiting for %s command\n",
timeleft == 0 ? "Timeout" : "Signal",
ctx_change == 0 ?
"configure endpoint" :
"evaluate context");
/* cancel the configure endpoint command */
ret = xhci_cancel_cmd(xhci, command, cmd_trb);
if (ret < 0)
return ret;
return -ETIME;
^ -ERESTARTSYS is swallowed
}
A simple ill-timed signal can cause a timeout to be reported.
This issue is fixed in upstream with
c311e391a7efd101250c0e123286709b7e736249
That change and its dependencies are really no stable material.
So how about a fix along the lines of:
/* Wait for the configure endpoint command to complete */
- timeleft = wait_for_completion_interruptible_timeout(
+ timeleft = wait_for_completion_timeout(
I have a patch ready to submit.
Regards
Oliver
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html