mirror of https://gitee.com/openkylin/linux.git
USB: fix USB boot crash, ecm_do_notify(), list_add corruption. prev->next should be next (ffff88003b8f82f8)
This fixes a BUG() turned up by Ingo via randconfig testing, where CONFIG_LIST_DEBUG turned up list corruption. The corruption was caused by the dummy_hcd (single-machine test harness for gadget and HCD code) trashing the request queue when driven by the new CDC composite gadget an I/O pattern that was previously uncommon. Fix suggested by Alan Stern. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Tested-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
88d987d6db
commit
c728df70ab
|
@ -542,13 +542,14 @@ dummy_queue (struct usb_ep *_ep, struct usb_request *_req,
|
|||
req->req.context = dum;
|
||||
req->req.complete = fifo_complete;
|
||||
|
||||
list_add_tail(&req->queue, &ep->queue);
|
||||
spin_unlock (&dum->lock);
|
||||
_req->actual = _req->length;
|
||||
_req->status = 0;
|
||||
_req->complete (_ep, _req);
|
||||
spin_lock (&dum->lock);
|
||||
}
|
||||
list_add_tail (&req->queue, &ep->queue);
|
||||
} else
|
||||
list_add_tail(&req->queue, &ep->queue);
|
||||
spin_unlock_irqrestore (&dum->lock, flags);
|
||||
|
||||
/* real hardware would likely enable transfers here, in case
|
||||
|
|
Loading…
Reference in New Issue