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

Commit ae1bc8a2 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "usb: f_qdss: Fix race between usb_connect_work and qdss_disable"

parents 89d46eb9 97882a07
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -776,6 +776,12 @@ static int dwc3_msm_ep_queue(struct usb_ep *ep,
	 * as soon as possible so we will release back the lock.
	 */
	spin_lock_irqsave(&dwc->lock, flags);
	if (!dwc->pullups_connected) {
		dev_err(mdwc->dev, "%s: No Pullup\n", __func__);
		spin_unlock_irqrestore(&dwc->lock, flags);
		return -ESHUTDOWN;
	}

	if (!dep->endpoint.desc) {
		dev_err(mdwc->dev,
			"%s: trying to queue request %pK to disabled ep %s\n",
+6 −1
Original line number Diff line number Diff line
@@ -595,17 +595,22 @@ static void usb_qdss_connect_work(struct work_struct *work)
	qdss = container_of(work, struct f_qdss, connect_w);

	/* If cable is already removed, discard connect_work */
	spin_lock_irqsave(&qdss->lock, flags);
	if (qdss->usb_connected == 0) {
		qdss_log("%s: discard connect_work\n", __func__);
		spin_unlock_irqrestore(&qdss->lock, flags);
		cancel_work_sync(&qdss->disconnect_w);
		return;
	}

	qdss_log("%s: channel name = %s\n", __func__, qdss->ch.name);

	if (!strcmp(qdss->ch.name, USB_QDSS_CH_MDM))
	if (!strcmp(qdss->ch.name, USB_QDSS_CH_MDM)) {
		spin_unlock_irqrestore(&qdss->lock, flags);
		goto notify;
	}

	spin_unlock_irqrestore(&qdss->lock, flags);
	status = set_qdss_data_connection(qdss, 1);
	if (status) {
		pr_err("set_qdss_data_connection error(%d)\n", status);