From 81f3b9aab8e971219b8386b60f85b7344d2585ce Mon Sep 17 00:00:00 2001 From: Mukesh Ojha Date: Fri, 5 May 2017 14:14:56 +0530 Subject: [PATCH] coresight-tmc: Adds lock to avoid race condition There can be a case of race in the call to tmc_etr_bam_disable(). The call from usb_notifier() to tmc_etr_bam_disable() is within a lock 'drvdata->mem_lock' but the call from tmc_disable is not under any lock which can lead to race. This patch adds the missing lock. CRs-Fixed: 2047196 Change-Id: I3986b498ae8e2b2ddfe8f5b3315fdefab197d11c Signed-off-by: Mukesh Ojha --- drivers/hwtracing/coresight/coresight-tmc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/hwtracing/coresight/coresight-tmc.c b/drivers/hwtracing/coresight/coresight-tmc.c index c5998bd5ce02..316d8b783d94 100644 --- a/drivers/hwtracing/coresight/coresight-tmc.c +++ b/drivers/hwtracing/coresight/coresight-tmc.c @@ -1018,6 +1018,7 @@ static void tmc_disable(struct tmc_drvdata *drvdata, enum tmc_mode mode) { unsigned long flags; + mutex_lock(&drvdata->mem_lock); spin_lock_irqsave(&drvdata->spinlock, flags); if (drvdata->reading) goto out; @@ -1054,7 +1055,7 @@ out: } pm_runtime_put(drvdata->dev); - + mutex_unlock(&drvdata->mem_lock); dev_info(drvdata->dev, "TMC disabled\n"); }