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

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

Merge "usb: f_qdss: Flush connect_work in qdss close"

parents fffc7785 4aba9363
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -2201,7 +2201,9 @@ static int _tmc_disable_etr_sink(struct coresight_device *csdev,
				spin_unlock_irqrestore(&drvdata->spinlock,
					flags);
				tmc_etr_bam_disable(drvdata);
				mutex_unlock(&drvdata->mem_lock);
				usb_qdss_close(drvdata->usbch);
				mutex_lock(&drvdata->mem_lock);
				drvdata->usbch = NULL;
				goto out;
			} else {
+4 −2
Original line number Diff line number Diff line
@@ -591,8 +591,8 @@ static void usb_qdss_connect_work(struct work_struct *work)

	qdss = container_of(work, struct f_qdss, connect_w);

	/* If qdss is closed or cable is removed, discard connect_work */
	if (qdss->qdss_close || qdss->usb_connected == 0) {
	/* If cable is removed, discard connect_work */
	if (qdss->usb_connected == 0) {
		cancel_work_sync(&qdss->disconnect_w);
		return;
	}
@@ -927,6 +927,8 @@ void usb_qdss_close(struct usb_qdss_ch *ch)

	if (qdss->endless_req) {
		spin_unlock_irqrestore(&channel_lock, flags);
		/* Flush connect work before proceeding with de-queue */
		flush_work(&qdss->connect_w);
		usb_ep_dequeue(qdss->port.data, qdss->endless_req);
		spin_lock_irqsave(&channel_lock, flags);
	}