Messages in this thread | | | Subject | Re: [PATCH 1/1] usb: xhci: hold lock over xhci_abort_cmd_ring() | From | Mathias Nyman <> | Date | Fri, 23 Dec 2016 14:16:34 +0200 |
| |
On 23.12.2016 08:46, Lu Baolu wrote: > In command timer function, xhci_handle_command_timeout(), xhci->lock > is unlocked before call into xhci_abort_cmd_ring(). This might cause > race between the timer function and the event handler. > > The xhci_abort_cmd_ring() function sets the CMD_RING_ABORT bit in the > command register and polling it until the setting takes effect. A stop > command ring event might be handled between writing the abort bit and > polling for it. The event handler will restart the command ring, which > causes the failure of polling, and we ever believed that we failed to > stop it. > > As a bonus, this also fixes some issues of calling functions without > locking in xhci_handle_command_timeout(). >
Did the same thing, moved the unlock to cover also abort_cmd_ring(),
but this one takes care of locking the command ring cleanup as well so I'll pick up this instead
-Mathias
| |