Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c728df70 authored by David Brownell's avatar David Brownell Committed by Greg Kroah-Hartman
Browse files

USB: fix USB boot crash, ecm_do_notify(), list_add corruption. prev->next...


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: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Tested-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 88d987d6
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -542,12 +542,13 @@ 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);
	}
	}  else
		list_add_tail(&req->queue, &ep->queue);
	spin_unlock_irqrestore (&dum->lock, flags);