diff options
author | Georgi Djakov <georgi.djakov@linaro.org> | 2019-10-18 17:17:50 +0300 |
---|---|---|
committer | Georgi Djakov <georgi.djakov@linaro.org> | 2019-10-20 12:14:41 +0300 |
commit | a8dfe193a60c6db7c54e03e3f1b96e0aa7244990 (patch) | |
tree | 0ef5f149ec3a97cba10ff97b3409e560e269c6e1 /drivers/interconnect/core.c | |
parent | 83c774f0c69d9d1b32812f3fcf7dde9b556d2670 (diff) | |
download | linux-a8dfe193a60c6db7c54e03e3f1b96e0aa7244990.tar.xz |
interconnect: Add locking in icc_set_tag()
We must ensure that the tag is not changed while we aggregate the
requests. Currently the icc_set_tag() is not using any locks and this
may cause the values to be aggregated incorrectly. Fix this by acquiring
the icc_lock while we set the tag.
Link: https://lore.kernel.org/lkml/20191018141750.17032-1-georgi.djakov@linaro.org/
Fixes: 127ab2cc5f19 ("interconnect: Add support for path tags")
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
Diffstat (limited to 'drivers/interconnect/core.c')
-rw-r--r-- | drivers/interconnect/core.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/interconnect/core.c b/drivers/interconnect/core.c index 7b971228df38..c498796adc07 100644 --- a/drivers/interconnect/core.c +++ b/drivers/interconnect/core.c @@ -405,8 +405,12 @@ void icc_set_tag(struct icc_path *path, u32 tag) if (!path) return; + mutex_lock(&icc_lock); + for (i = 0; i < path->num_nodes; i++) path->reqs[i].tag = tag; + + mutex_unlock(&icc_lock); } EXPORT_SYMBOL_GPL(icc_set_tag); |