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

Commit 2594cf9a authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "usb: wwan: Fix list corruption during port re-open"

parents 0e076ea4 7f662beb
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -364,6 +364,13 @@ static void usb_wwan_indat_callback(struct urb *urb)
	portdata = usb_get_serial_port_data(port);
	intfdata = port->serial->private;

	spin_lock(&intfdata->susp_lock);
	if (!portdata->opened) {
		spin_unlock(&intfdata->susp_lock);
		return;
	}
	spin_unlock(&intfdata->susp_lock);

	usb_mark_last_busy(port->serial->dev);

	if ((status == -ENOENT || !status) && urb->actual_length) {
@@ -380,7 +387,7 @@ static void usb_wwan_indat_callback(struct urb *urb)
		__func__, status, endpoint);

	spin_lock(&intfdata->susp_lock);
	if (intfdata->suspended || !portdata->opened) {
	if (intfdata->suspended) {
		spin_unlock(&intfdata->susp_lock);
		return;
	}
@@ -546,6 +553,8 @@ void usb_wwan_close(struct usb_serial_port *port)
	portdata->opened = 0;
	spin_unlock_irq(&intfdata->susp_lock);

	cancel_work_sync(&portdata->in_work);

	for (i = 0; i < N_IN_URB; i++)
		usb_kill_urb(portdata->in_urbs[i]);
	for (i = 0; i < N_OUT_URB; i++)