signals causing errors in stable tree in XHCI driver

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

 



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 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