From 837d01662883f4d791d9f86156263a23a75ed8c6 Mon Sep 17 00:00:00 2001 From: Yuanfang Zhang Date: Fri, 23 Oct 2020 11:08:32 +0800 Subject: [PATCH] coresight: tmc: fix spinlock bad magic/usb_qdss_close MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modify the sequence of ETR disable,drvdata->mode is set to CS_MODE_DISABLE before calling usb_qdss_close(). Change-Id: I575867cee95f4db5ba155a2619ab1eca954d6387 Signed-off-by: Yuanfang Zhang --- drivers/hwtracing/coresight/coresight-tmc-etr.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/hwtracing/coresight/coresight-tmc-etr.c b/drivers/hwtracing/coresight/coresight-tmc-etr.c index dd00a5666f5c..b56fd788578c 100644 --- a/drivers/hwtracing/coresight/coresight-tmc-etr.c +++ b/drivers/hwtracing/coresight/coresight-tmc-etr.c @@ -2013,6 +2013,7 @@ static int _tmc_disable_etr_sink(struct coresight_device *csdev, /* Complain if we (somehow) got out of sync */ WARN_ON_ONCE(drvdata->mode == CS_MODE_DISABLED); if (drvdata->mode != CS_MODE_DISABLED) { + drvdata->mode = CS_MODE_DISABLED; if (drvdata->out_mode == TMC_ETR_OUT_MODE_USB) { if (!drvdata->byte_cntr->sw_usb) { __tmc_etr_disable_to_bam(drvdata); @@ -2021,7 +2022,6 @@ static int _tmc_disable_etr_sink(struct coresight_device *csdev, tmc_etr_bam_disable(drvdata); usb_qdss_close(drvdata->usbch); drvdata->usbch = NULL; - drvdata->mode = CS_MODE_DISABLED; goto out; } else { spin_unlock_irqrestore(&drvdata->spinlock, @@ -2033,11 +2033,9 @@ static int _tmc_disable_etr_sink(struct coresight_device *csdev, } else { tmc_etr_disable_hw(drvdata); } - drvdata->mode = CS_MODE_DISABLED; } /* Dissociate from monitored process. */ drvdata->pid = -1; - drvdata->mode = CS_MODE_DISABLED; /* Reset perf specific data */ drvdata->perf_buf = NULL;