cntr_val is overwritten with the values read from the corresponding registers by etm4_disable_hw() when the session is disabled.
This means that any changes to these values made while the session is enabled would be lost when the session is disabled.
Therefore, prohibit modifying cntr_val while the session is enabled.
Tested-by: Leo Yan leo.yan@arm.com Reviewed-by: Mike Leach mike.leach@arm.com Signed-off-by: Yeoreum Yun yeoreum.yun@arm.com --- drivers/hwtracing/coresight/coresight-etm4x-sysfs.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c b/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c index 2c72ea831fe6..bf4e81bc1e8b 100644 --- a/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c +++ b/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c @@ -1615,6 +1615,9 @@ static ssize_t cntr_val_store(struct device *dev, return -EINVAL; if (val > ETM_CNTR_MAX_VAL) return -EINVAL; + if (IS_ERR_OR_NULL(drvdata->csdev) || + coresight_get_mode(drvdata->csdev)) + return -EBUSY;
raw_spin_lock(&drvdata->spinlock); idx = config->cntr_idx;