nest_imc_refc is a reference count struct,
used to track number of active perf sessions
using the nest units.

It is preferred to access nest_imc_refc using
per-cpu pointer 'local_nest_imc_refc'. Since,
nest_imc_refc is not initialized using node_id
as array index. Patch to fix the same.

Fixes: 885dcd709ba91 ('powerpc/perf: Add nest IMC PMU support')
Reported-by: Dan Carpenter <dan.carpen...@oracle.com>
Signed-off-by: Madhavan Srinivasan <ma...@linux.vnet.ibm.com>
---
 arch/powerpc/perf/imc-pmu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/perf/imc-pmu.c b/arch/powerpc/perf/imc-pmu.c
index a8f95f96d54b..9ccac86f3463 100644
--- a/arch/powerpc/perf/imc-pmu.c
+++ b/arch/powerpc/perf/imc-pmu.c
@@ -404,7 +404,7 @@ static void nest_imc_counters_release(struct perf_event 
*event)
                rc = opal_imc_counters_stop(OPAL_IMC_COUNTERS_NEST,
                                            
get_hard_smp_processor_id(event->cpu));
                if (rc) {
-                       mutex_unlock(&nest_imc_refc[node_id].lock);
+                       mutex_unlock(&ref->lock);
                        pr_err("nest-imc: Unable to stop the counters for core 
%d\n", node_id);
                        return;
                }
@@ -487,7 +487,7 @@ static int nest_imc_event_init(struct perf_event *event)
                rc = opal_imc_counters_start(OPAL_IMC_COUNTERS_NEST,
                                             
get_hard_smp_processor_id(event->cpu));
                if (rc) {
-                       mutex_unlock(&nest_imc_refc[node_id].lock);
+                       mutex_unlock(&ref->lock);
                        pr_err("nest-imc: Unable to start the counters for node 
%d\n",
                                                                        
node_id);
                        return rc;
-- 
2.7.4

Reply via email to