From b20c61948d4e741f8ad1d6278cc9ea65103eed83 Mon Sep 17 00:00:00 2001 From: "Tao,Zhang" Date: Thu, 28 May 2020 15:27:10 +0800 Subject: [PATCH] coresight: Forbid enabling sink while reading sink Forbid enabling sink in the process of reading sink. Otherwise, sink flag "activated" will be set to true, and the source has a chance to be added to "cs_active_paths" twice. Then, system will crash if sink is continued to be read due to two same source in "cs_active_paths". Change-Id: I3317ea435e9d84258e3fcbf854a6078afcd4a08e Signed-off-by: Tao,Zhang --- drivers/hwtracing/coresight/coresight.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/hwtracing/coresight/coresight.c b/drivers/hwtracing/coresight/coresight.c index 0f00c8c47c38..ed7cf0e87c50 100644 --- a/drivers/hwtracing/coresight/coresight.c +++ b/drivers/hwtracing/coresight/coresight.c @@ -1151,7 +1151,6 @@ static ssize_t enable_sink_store(struct device *dev, int ret; unsigned long val; struct coresight_device *csdev = to_coresight_device(dev); - struct coresight_device *sink = NULL; ret = kstrtoul(buf, 10, &val); if (ret) @@ -1159,10 +1158,7 @@ static ssize_t enable_sink_store(struct device *dev, mutex_lock(&coresight_mutex); if (val) { - sink = activated_sink ? activated_sink : - coresight_get_enabled_sink(false); - if (sink && strcmp(dev_name(&sink->dev), - dev_name(&csdev->dev))) + if (activated_sink) goto err; csdev->activated = true; } else {